【发布时间】:2021-10-15 17:10:23
【问题描述】:
我有一个名为StatSummary 的类,它有标签,底部有一个名为“重置”的按钮。当我按下此按钮时,会出现一个弹出窗口,其中还显示“重置”按钮。当我按下弹出的“重置”按钮时,我想更新 StatSummary 类的标签文本。我在 StatSummary 中创建了一个名为 resetStatSummary 的方法,它使用 ID 更新标签的文本。
但是,当我从ResetPopup 调用Factory.StatSummary().resetStatSummary() 时,屏幕上的标签不会更新。这尤其令人困惑,因为我在我的 Python 文件中添加了一个打印语句来查看函数是否运行并且它运行了,但是标签的文本没有更新。
Python 文件:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.config import Config
from kivy.uix.popup import Popup
class StatSummary(Screen):
def resetStatSummary(self): # resets StatSummary text when "Reset" button is pressed
self.ids.summaryShotFractionLabel.text = "0/0"
self.ids.summaryShotPercentLabel.text = "0.0%"
self.ids.summaryLongStreakLabel.text = "Longest Streak: 0"
print("resetStatSummary ran")
class ResetPopup(Popup):
pass
class WindowManager(ScreenManager):
pass
kv = Builder.load_file('basketball.kv')
class MainApp(App):
def build(self):
return kv
if __name__ == "__main__":
MainApp().run()
.kv 文件:
#:import Factory kivy.factory.Factory
WindowManager:
StatSummary
<StatSummary>
name: "statSummary"
GridLayout:
BoxLayout:
orientation: "vertical"
Label:
id: summaryShotFractionLabel
text: "0/0"
Label:
id: summaryShotPercentLabel
text: "0.0%"
BoxLayout:
orientation: "vertical"
Label:
id: summaryLongStreakLabel
text: "Longest Streak: 0"
BoxLayout:
orientation: "horizontal"
Button:
text: "Reset"
on_release:
Factory.ResetPopup().open()
<ResetPopup>:
title: "Wait..."
BoxLayout:
cols: 1
orientation: "vertical"
Label:
text: "Are you sure you want to reset?"
Button:
text: "Go back"
on_release:
root.dismiss()
Button:
text: "Reset"
on_release:
root.dismiss()
Factory.StatSummary().resetStatSummary()
app.root.current = "interact"
app.root.transition.direction = "right"
【问题讨论】:
标签: python kivy label kivy-language