编辑:
长话短说,我正在寻找一种将Label小部件切换为按钮的方法。我有一个带有文本的标签,我想把它变成4个按钮(2x2),并且能够在两者之间切换。
我开始选择你自己的冒险游戏,并且在构思游戏的最佳方法时遇到一些麻烦,这种方法对于设备/计算机来说效率高,而且费用低。这个想法是你通过一些对话,拿着对话框的容器然后有选择的按钮。我想找到在通过对话和做出选择之间切换的最佳方式。我想出了一些想法,其中一些包括编写代码,以便在添加和删除按钮按下小部件时,另一个想法(更容易实现但可能效率低下),是创建一个全新的屏幕,仅用于用于做出选择,除了用于保存文本标签的中间小部件之外,一切都是相同的,但现在将包含一个垂直BoxLayout,其中有4个按钮内有两个BoxLayout。这是.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的新手。
编辑: 我的最后一个想法是在屏幕上做一个专门的区域来做出选择,但如果可能的话,我希望能够在对话和按钮之间切换以获得更时尚的感觉。
答案 0 :(得分:0)
为什么不转向RecycleView?它的内容是由数据动态控制的小部件(特别是dicts列表),并且可以处理其中的小部件的任何组合。