我想知道是否有一种方法可以将我在.py文件中创建的变量分配到.kv文件中的Label
中?所讨论的变量是cart
,设置为0,我想创建一个Label
,当cart
更改值时更新。我尝试过在标签文本中添加root.cart
或app.cart
,但它们似乎不起作用。任何帮助都将不胜感激
下面是我为实现目标而创建的一个简单示例代码
.py文件
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.popup import Popup
cart = 0
class FirstScreen(Screen):
def LasagneSmall(self, button):
global cart
cart = cart + 7
print(cart)
def sizeSelection(self):
sizepopup = FloatLayout()
sizepop = Popup(title="Format", separator_color=[0.6, 0, 0, 1], content=sizepopup,title_font=("Gothic"), size_hint=(0.6, 0.6))
sizepopup.add_widget(Label(text="Choose a format", font_name="Gothic", pos_hint={"x": 0, "y": 0.4}))
sizepopup.add_widget(Button(text="Small", font_name="Gothic", size_hint=(1, 0.15), pos_hint={"x": 0, "y": 0.6}, on_release = self.LasagneSmall ))
sizepopup.add_widget(Button(text="Back", font_name="Gothic", size_hint=(0.8, 0.15), pos_hint={"x": 0.10, "y": 0}, on_release=sizepop.dismiss))
sizepop.open()
class WindowManager(ScreenManager):
pass
class exampleApp(App):
def build(self):
return WindowManager()
if __name__ == "__main__":
exampleApp().run()
.kv文件
<WindowManager>:
FirstScreen:
<FirstScreen>:
FloatLayout:
Button:
text: "Add to cart"
size_hint: 0.5,0.1
pos_hint: {"x": 0.25,"y":0.5}
on_release:
root.sizeSelection()
Label:
对于
cart
变量,应该使用NumericProperty
,而不是使用global
。如果引用Property
作为kv
中属性的值,则kv
将自动设置绑定,以便在Property
更改时更新该属性。下面是FirstScreen
类的一个稍加修改的版本,该类使用Property
作为购物车:然后
Property
可以在kv
中引用:相关问题 更多 >
编程相关推荐