1
我正在寫一個加熱控制系統的代碼。更改標籤文本acc。到python變量
我只是想能夠改變標籤文本FROM WITHPYTHON。我的意思是,不是在GUI代碼中,而是在主要的其他地方。
這裏是我的MWE:
import time
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
import multiprocessing
from kivy.properties import StringProperty
class Data (Widget):
top = StringProperty('hiii')
def __init__(self, **kwargs):
super(Widget, self).__init__(**kwargs)
global mydata
mydata=Data()
class myw (BoxLayout):
def __init__(self, **kwargs):
super(myw, self).__init__(**kwargs)
VERT = BoxLayout(orientation='vertical')
o = Label(text='Oben: ',
font_size=120)
m = Label(text='Mitte: ',
font_size=120)
u = Label(text='Unten: ',
font_size=120)
a = Label(text='Aussen: ',
font_size=120)
mydata.bind(top=o.setter('text'))
VERT.add_widget(o)
VERT.add_widget(m)
VERT.add_widget(u)
VERT.add_widget(a)
onoff = Button(text='Ein',
font_size=120,
size_hint=(0.3, 1))
self.add_widget(VERT)
self.add_widget(onoff)
class TutorialApp(App):
def build(self):
return myw()
if __name__ == "__main__":
try:
global myapp
myapp=TutorialApp()
app_runner=multiprocessing.Process(target=myapp.run)
app_runner.start()
time.sleep(3)
mydata.top='new value assigned'
print (mydata.top)
time.sleep(5)
app_runner.terminate()
except Exception as e:
print ('error occured', e)
我特意宣佈kivy碼外的變量「MYDATA」,這樣我可以從其他地方在代碼中(這裏沒有顯示)訪問它。
我知道了!但是這對我來說不起作用... – eric
它工作得很好。我現在唯一看到的是'string ='now changed'',它與'RootWidget.string'不同。得到這個變量使用'my_app.root.string ='something''。它應該改變。然而,你的代碼給了我一個'RuntimeError'和一些關於'freeze_support'所以... – KeyWeeUsr
是的,我得到一個錯誤的方法,以及...我編輯了第二次嘗試的原始代碼... – eric