更改标签文本acc。到python变量

时间:2016-10-29 21:07:10

标签: python properties kivy

我正在为加热控制系统编写代码。

我只是希望能够在PYTHON中更改标签文本。 我的意思是,不是在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',这样我就可以从代码中的其他地方访问它(这里没有显示)。

1 个答案:

答案 0 :(得分:1)

使用线程而不是多处理解决了这个问题。

所以而不是

app_runner=multiprocessing.Process(target=myapp.run)
现在它写着:

app_runner=threading.Thread(target=myapp.run)