【发布时间】:2021-06-13 10:43:10
【问题描述】:
所以我正在构建一个常识问答游戏,在应用启动时,玩家的分数(保存在 .txt 文件中)应该显示在标签中。
我已尝试为此使用 on_start() 函数,但我似乎无法访问“分数”标签的 ID。这是我给出错误的代码行:
self.root.get_screen("home_screen").ids.score.text = str(playerScore)
我收到以下错误:
AttributeError: 'super' object has no attribute '__getattr__'
这是我的完整代码:
#main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_file('design.kv')
class RootWidget(ScreenManager):
pass
class HomeScreen(Screen):
pass
class MainApp(App):
def build(self):
return RootWidget()
def on_start(self):
with open("score.txt", "r") as f:
playerScore = f.readline()
self.root.get_screen("home_screen").ids.score.text = str(playerScore)
if __name__ == "__main__":
MainApp().run()
和
#design.kv
<HomeScreen>:
GridLayout:
cols: 1
GridLayout:
cols: 2
Button:
id: infoButton
text: "Wiki"
Label:
id: score
GridLayout:
cols: 1
Label:
id: Question
text: "Question"
Button:
id: Button1
text: "Option 1"
Button:
id: Button1
text: "Option 2"
Button:
id: Button1
text: "Option 3"
Button:
id: Button1
text: "Option 4"
<RootWidget>:
HomeScreen:
name: "home_screen"
还有一个 'score.txt' 文件,里面只有 - '100'。
谢谢。
【问题讨论】:
-
你在哪里为
HomeScreen定义name? -
嗨,约翰,我未能发布 kivy 文件的最后几行。我已经更新了帖子。 HomeScreen 在 die design.kv 文件的最后一行中定义。道歉。
标签: python python-3.x kivy kivy-language kivymd