推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
neroransom
V2EX  ›  Python

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

  •  
  •   neroransom · Mar 1, 2020 · 2727 views
    This topic created in 2264 days ago, the information mentioned may be changed or developed.

    用 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()
    
    neroransom
        1
    neroransom  
    OP
       Mar 1, 2020
    解决了,似乎是开了新进程后,原先写在主程序的 mainloop 不管用了,因此要在构建这个申请新窗口里再加一个 mainloop

    class Chat
    def __init__(self,account,udpCliSock,ADDR):
    self.ADDR = ADDR
    self.udpCliSock=udpCliSock
    root = Tk()
    root.mainloop
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3298 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 12:34 · PVG 20:34 · LAX 05:34 · JFK 08:34
    ♥ Do have faith in what you're doing.