[英]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.