我希望实现以下目标:
使用add_widget()
函数在python中创建一个Kivy标签。但是,我想从以下事实中获益:当文本变量发生更改时,标签会自动更新(在我的例子中是self.gui_data.number
)。我知道在.kv文件中添加标签时可以实现这一点,但是在我的情况下这是不可能的,因为我需要在运行时构建部分GUI
下面是一个简单示例的代码。有一个按钮add label
用于添加标签,其目的是如果按下decrement
按钮,标签会发生变化。不幸的是,情况并非如此
感谢您的帮助。谢谢
main.py
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.widget import Widget
import parameters
from kivy.properties import StringProperty
from kivy.event import EventDispatcher
class PongBall(Widget):
gui_data = parameters.Data()
def add_label(self):
self.gui_data.number = self.gui_data.number + '5'
label = Label(text=str(self.gui_data.number))
self.ids.board.add_widget(label)
def decrement(self):
self.gui_data.number = self.gui_data.number + '6'
def reset_parameters(self):
self.gui_data.reset()
class PongApp(App):
def build(self):
game = PongBall()
return game
if __name__ == '__main__':
PongApp().run()
参数.py
from kivy.properties import StringProperty
from kivy.event import EventDispatcher
class Data(EventDispatcher):
number = StringProperty("0")
def reset(self):
self.number = "0"
庞千伏
<PongBall>:
BoxLayout:
orientation: "vertical"
id: board
Button:
text: "Add label"
on_press: root.add_label()
Button:
text: "Decrement"
on_press: root.decrement()
Button:
text: "Reset parameters"
on_press: root.reset_parameters()
为了做你想做的事情,你需要一个可以绑定到的}
Property
。在下面代码的修改版本中,我向PongBall
类添加了一个number
{相关问题 更多 >
编程相关推荐