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