我是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)
答案 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
库管理的方式有关,并且与在单独的进程中运行它们的想法发生冲突。