如何使用多处理更改tkinter中的标签?

时间:2014-05-02 17:22:02

标签: python tkinter label multiprocessing

import Tkinter,multiprocessing

class cambiar(object):
    def __init__(self,master,estado=False):
        self.master = master
        if estado == False:
            self.run()

    def run(self):
        self.master['text'] = 'que tal'

class body(object):
    def __init__(self,win):
        self.win = win
        lista = ['label','botones']
        cont = len(lista)
        for i in range(cont):
            eval('self.'+str(lista[i]+'()'))

    def label(self):
        self.label_1 = Tkinter.Label(self.win,text='hola')
        self.label_1.grid(row=0,column=0)

    def botones(self):
        self.boton_1 = Tkinter.Button(self.win,text='cambiar',command=lambda :self.win.proceso(self.label_1))
        self.boton_1.grid(row=1,column=0)


class main(Tkinter.Tk):
    def __init__(self):
        Tkinter.Tk.__init__(self)
        self.geometry('500x500')
        self.b = body(self)

    def proceso(self,wid):
        self.p = multiprocessing.Process(target=cambiar,args=(wid,))
        self.p.start()

root = main()
root.mainloop()

我有这个代码,奇怪的是没有意义我想要的是学习主进程可以改变属性,例如在这种情况下的标签,有谁知道我该怎么做?

1 个答案:

答案 0 :(得分:0)

  1. 如果这是您的代码,我不知道您为何使用多处理而不是线程。
  2. 使用multiprocessing.Pool并等待异步调用的未来准备就绪。您可以等待调度具有root.after的函数来测试未来状态。完成并行计算时更改标签=当将来有值时更改标签。