繁体   English   中英

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

[英]Tkinter multiprocessing: the main GUI window is not displayed

我是python的新手,正在尝试用Tkinter实现多进程。 我有一个主要的GUI流程,还有另外两个“测试”流程。 此代码在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)

尝试这个:

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()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM