下面的代码没有把第二个按钮的内容放在里面,内容在第一个按钮的位置,你能解释一下为什么吗? 结果应该是弹出两个按钮,每个按钮都有自己的内容,不是吗? 我做错了什么?你知道吗
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.properties import ObjectProperty, ListProperty
Builder.load_string('''
<ListAvions>:
box: box
BoxLayout:
id: box
orientation: 'vertical'
<AvionToBuy>:
boxlabel: boxlabel
size_hint_y: None
height: 300
background_color: [1, 0, 1, .5]
on_release: print(root.avion)
BoxLayout:
orientation: 'horizontal'
Label:
text: root.avion[0]
size_hint: None, None
size: 300, 300
BoxLayout:
orientation: 'vertical'
id: boxlabel
Label:
text: root.avion[1]
size_hint: None, None
size: 420, 150
Label:
text: str(root.avion[2]) + "$"
size_hint: None, None
size: 420, 150
''')
AVIONS = [["P51.png", "P51", 750], ["F22.png", "F22", 1500]]
class ListAvions(Popup):
box = ObjectProperty(None)
def add(self):
for avion in range(len(AVIONS)):
aviontobuybut = AvionToBuy()
aviontobuybut.avion = AVIONS[avion]
self.box.add_widget(aviontobuybut)
class AvionToBuy(Button):
avion = ListProperty(AVIONS[0])
class AvionApp(App):
def build(self):
z = ListAvions()
z.add()
return z
if __name__=="__main__":
AvionApp().run()
如果您只是将文本放入
AvionToBuy
小部件,只需使用Button
的text
属性即可。您可以将kv
文件中AvionToBuy
的规则更改为:这里是对原始代码的修改,使
AvionToBuy
扩展ButtonBehavior
和BoxLayout
。这允许您将任何小部件作为AvionToBuy
的子部件,子部件将水平放置。我已经包括了你原来的Labels
,并添加了一个Image
。现在AvionToBuy
的行为就像Button
。我还添加了默认的Button
主题。你知道吗相关问题 更多 >
编程相关推荐