请教下大家,为什么 Python 的申请新进程 Process start() 后没能打开 tkinter 的新窗口?

2020-03-01 00:40:11 +08:00
 neroransom

用 tkinter 写了个聊天小软件,想试试多进程。但是调用 p.start() 函数后,虽然调用成功了,(有输出结果),但是 target 的函数中,申请 GUI 窗口的函数 Tk() 似乎没有正常工作。如果我把 start(),改成 run(),他还是能够正常工作,似乎还是进程问题,有朋友能指点一下吗。

def startchat(self,account):
     p = Process(target = chat.main,args=(account,self.udpCliSock,self.ADDR))
     p. start()
def main(account, udpCliSock, ADDR):
 Chat(account, udpCliSock, ADDR)
class Chat:
    def __init__(self,account,udpCliSock,ADDR):
        self.ADDR = ADDR
        self.udpCliSock=udpCliSock
        root = Tk()
1875 次点击
所在节点    Python
1 条回复
neroransom
2020-03-01 11:30:10 +08:00
解决了,似乎是开了新进程后,原先写在主程序的 mainloop 不管用了,因此要在构建这个申请新窗口里再加一个 mainloop

class Chat
def __init__(self,account,udpCliSock,ADDR):
self.ADDR = ADDR
self.udpCliSock=udpCliSock
root = Tk()
root.mainloop

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX