我是Kivy的新手,在工作中有點學習。我對如何利用各種小部件和嵌套佈局有基本的瞭解。代碼如下(保存爲GUI.py): -將變量從.py文件傳遞到.kv文件
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.properties import ListProperty, NumericProperty, StringProperty
class TestScreen(Screen):
pass
class VariableScreen(Screen):
pass
class SummaryScreen(Screen):
pass
class ProgressScreen(Screen):
pass
class CompletedResultsScreen(Screen):
pass
class SavedResultsScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
GUI_code = Builder.load_file("GUI.kv")
class GUIWindow(App): #App class is inherited
sampletext = StringProperty("Five times Five")
def build(self):
return GUI_code
if __name__ == "__main__":
GUIWindow().run()
的GUI.kv文件包含以下內容:
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
TestScreen:
VariableScreen:
SummaryScreen:
ProgressScreen:
CompletedResultsScreen:
SavedResultsScreen:
<TestScreen>:
name: "Test_Screen"
FloatLayout:
Label:
text: "Test"
size_hint: 0.1,0.1
pos_hint: {"right":0.5,"top":1}
Label:
text: app.sampletext
size_hint: 0.1,0.1
pos_hint: {"right":0.1,"top":1}
Button:
on_release: app.root.current = "Saved_Results_Screen"
text: "Saved Results"
size_hint: 0.1,0.1
pos_hint: {"left":1,"bottom":1}
font_size: 15
Button:
on_release: app.root.current = "Variable_Screen"
text: "Variable"
size_hint: 0.1,0.1
pos_hint: {"right":1,"bottom":1}
font_size: 15
只有.kv文件的相關部分公佈。一些字符串必須從.py文件傳遞到.kv文件。這個問題在下面的鏈接是寫給:
Pass variable value from main.py to .kv file
基礎上的建議有,我用StringProperty類放在sampletext在GUIWindow類。 (也嘗試了一個簡單的字符串sampletext =「Five times Five」。給出相同的錯誤)
當第二個標籤下的文本屬性設置爲文本時,代碼不會運行:app.sampletext白空間打開它是非響應蟒蛇內核需要重新加載關閉它)
顯示以下錯誤消息
18: pos_hint: {"right":0.5,"top":1}
19: Label:
>> 20: text: app.sampletext
21: size_hint: 0.1,0.1
22: pos_hint: {"right":0.1,"top":1}
...
AttributeError: 'NoneType' object has no attribute 'bind'
它當文本屬性設置爲文本正常運行。「五次五次「
有人可以善意解釋發生了什麼問題嗎?
謝謝:)完全解決了這個問題 – Aditya
你能標記答案嗎?謝謝! – bj0
完成:)對不起,很長的延遲。 – Aditya