Tkinter多处理:不显示主GUI窗口

时间:2014-01-02 14:44:10

标签: python tkinter multiprocessing

我是python的新手并尝试使用Tkinter实现多进程。我正在进行一个主GUI过程,还有另外两个" test"流程。此代码在Windows中正常工作,并显示主窗口,另外两个进程也在运行。但是,当我在Ubuntu中运行此代码时,它不起作用,两个测试进程正在运行,但不显示主GUI窗口。 谁可以帮我这个事?

from Tkinter import *   
from multiprocessing import Process  
import time
def mywind():
      root=Tk()    
      root.title = "MyWindow"  
      frame=Frame(root)  
      root.mainloop()
def test1():   
    while True:    
        print  "In test1"    
        time.sleep(1)    

def test2():    
    while True:   
        print  "In test2"    
        time.sleep(1)    

if __name__ == '__main__':

    p1 = Process(target=test1)
    p1.start()
    p2 = Process(target=test2)
    p2.start()
    p = Process(target=mywind)
    p.start()
    while True:
        time.sleep(1)

1 个答案:

答案 0 :(得分:0)

试试这个:

from Tkinter import *
from multiprocessing import Process
import time

root = None

def mywind():
    root=Tk()
    root.title = "MyWindow"
    frame=Frame(root)
    return root

def test1():
    while True:
        print  "In test1"
        time.sleep(1)

def test2():
    while True:
        print  "In test2"
        time.sleep(1)

if __name__ == '__main__':

    p1 = Process(target=test1)
    p1.start()
    p2 = Process(target=test2)
    p2.start()
    root = mywind()
    root.mainloop()

我无法完全解释为什么将主循环放入主进程而不是子进程。我认为它与Tk资源(和底层本机窗口资源)由Tkinter库管理的方式有关,并且与在单独的进程中运行它们的想法发生冲突。