Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用tkinter pythpn使用大量主循环_Python_Multithreading_Sockets_Tkinter_Mainloop - Fatal编程技术网

Python 使用tkinter pythpn使用大量主循环

Python 使用tkinter pythpn使用大量主循环,python,multithreading,sockets,tkinter,mainloop,Python,Multithreading,Sockets,Tkinter,Mainloop,所以我在学校做一个项目,我在和Tkinter做一个游戏(我知道我可以用PyGame,但我们在学校只学Tkinter…) 我的游戏也使用套接字,你可能知道,一旦代码卡在上面,整个程序就会冻结。为了克服这个问题,我所做的是,大多数时候,我从服务器接收到的东西都是在线程中完成的。但是,由于没有服务器的回答,我无法继续,所以我调用了MainLoop,程序将在其上“停止”,一旦我从客户端获得信息,我就销毁了MainLoop,并在需要的地方继续。。。。 我的问题是这样做是否合适,如果不合适,请帮助我以“友好

所以我在学校做一个项目,我在和Tkinter做一个游戏(我知道我可以用PyGame,但我们在学校只学Tkinter…) 我的游戏也使用套接字,你可能知道,一旦代码卡在上面,整个程序就会冻结。为了克服这个问题,我所做的是,大多数时候,我从服务器接收到的东西都是在线程中完成的。但是,由于没有服务器的回答,我无法继续,所以我调用了MainLoop,程序将在其上“停止”,一旦我从客户端获得信息,我就销毁了MainLoop,并在需要的地方继续。。。。 我的问题是这样做是否合适,如果不合适,请帮助我以“友好”的方式解决这个问题

看起来是这样的:

global data
Thread(target=recv)
def recv():
    global data
    data = my_socket.rceive(1024)
tk.mainlooop()
if data == True:
    ...Do Something...
试试这个

while true:
    Try:
        data = my_socket.rceive(1024)
        break
    Else:
        print("Retrying")

While循环也在停止代码的其余部分。。。。它的行为就像一个正规的socket.receive(),因为为了让GUI继续运行,代码必须在MainLoop行中,首先您必须理解。通读