Edit:
Короче говоря, я ищу способ переключить виджет Label на кнопки. У меня есть ярлык с текстом, и я хочу сделать из него 4 кнопки (2x2) и иметь возможность переключаться между ними.
Я начинаю выбирать свою собственную приключенческую игру и испытываю некоторые затруднения с концептуализацией лучшего способа кодирования игры, который был бы эффективным и с меньшими затратами для устройства / компьютера. Идея состоит в том, что вы проходите некоторый диалог, и тогда контейнер, содержащий виджет для диалога, будет иметь кнопки для выбора. Я хотел бы найти лучший способ переключения между диалогом и выбором. Я выдвинул несколько идей, некоторые из которых включают в себя написание кода так, чтобы при нажатии кнопки виджеты добавлялись и удалялись, а другая идея (которая проще в реализации, но, вероятно, неэффективна), заключается в создании совершенно нового экрана, используемого только для того, чтобы сделать выбор, при этом все было одинаково, за исключением среднего виджета, который раньше содержал текстовую метку, но теперь будет содержать вертикальный BoxLayout, с двумя внутри BoxLayout для 4 кнопок. Вот код в файле .kv:
#:import FadeTransition kivy.uix.screenmanager.FadeTransition
<RootScreen>:
transition: FadeTransition()
StartScreen:
LevelOneBedroomScreen:
LevelOneBedroomScreenchoice:
<StartScreen>:
name: 'start'
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'start_screen.png'
FloatLayout:
Image:
source: 'start_screen.png'
allow_stretch: True
keep_ratio: False
size_hint: 1, 1
Button:
text: 'Start'
size_hint: 0.4, 0.3
pos_hint: {'center_x':.5, 'center_y':.5}
font_size: 70
on_release: root.manager.current = 'level one bedroom'
<LevelOneBedroomScreen>:
name: 'level one bedroom'
BoxLayout:
orientation: 'vertical'
Label:
text: 'Image of Bedroom'
Label:
text: 'Dialogue Text'
BoxLayout:
size_hint_y: .2
Label:
text: 'left arrow'
Button:
text: 'choose'
on_release: root.manager.current = 'level one bedroom choice'
Label:
text: 'right arrow'
<LevelOneBedroomScreenChoice>:
name: 'level one bedroom choice'
BoxLayout:
orientation: 'vertical'
Label:
text: 'Image of Bedroom'
BoxLayout:
orientation: 'vertical'
BoxLayout:
Button:
text: 'choice 1'
Button:
text: 'choice 2'
BoxLayout:
Button:
text: 'choice 3'
Button:
text: 'choice 4'
BoxLayout:
size_hint_y: .2
Label:
text: 'left arrow'
Button:
text: 'home'
on_release: root.manager.current = 'level one bedroom'
Label:
text: 'right arrow'
Это грубая идея, и структура кода, вероятно, изменится, но я только начинаю концептуализировать логику, и мне интересно, есть ли лучший способ сделать это (возможно, так и есть). Я буду отсутствовать несколько часов, но смогу ответить на любые ответы, когда вернусь, заранее благодарю вас, и я прошу прощения, если я не включил соответствующую информацию или если этот запрос не подходит для этого веб-сайта, я Я все еще новичок в Python (и кодирования в целом), и очень плохо знаком с Kivy.
редактирование:
Моя последняя идея - сделать выделенную область на экране для выбора, но, если возможно, я бы хотел иметь возможность переключаться между диалогами и кнопками для более гладкого ощущения.