[英]Assign a variable from py file to a label in kv file?
我想知道是否有一種方法可以將我在 .py 文件中創建的變量分配到 .kv 文件中的Label
中? 有問題的變量是設置為 0 的cart
,我想創建一個在cart
更改值時更新的Label
。 我試過將root.cart
或app.cart
添加到 Label 的文本中,但它們似乎不起作用。 任何幫助將非常感激!
這是我為實現目標而創建的簡單示例代碼。
.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
:
# cart = 0
class FirstScreen(Screen):
cart = NumericProperty(0)
def LasagneSmall(self, button):
# global cart
self.cart += 7
print(self.cart)
然后可以在kv
引用該Property
:
<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:
text: str(root.cart) # references the cart property
size_hint: 0.5,0.1
pos_hint: {"x": 0.25,"top":1}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.