大佬教程收集整理的这篇文章主要介绍了关于 tkinter 和套接字/线程的理解问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
每次收到某个电报时,我都会尝试显示一个窗口。 但是,这仅在程序启动后第一次起作用:
import socket
import threading
from Tkinter import Tk,Label,top
bind_ip = 'localhost'
bind_port = 29800
print 'Listening on {0}:{1}'.format(bind_ip,bind_port)
def handle_clIEnt_connection(clIEnt_socket):
request = clIEnt_socket.recv(1024)
clIEnt_socket.close()
if request == "abcde":
root = Tk()
label = Label(root,text="Test!")
label.pack(sIDe=top)
root.after( 2000,root.destroy);
root.mainloop()
server = socket.socket(socket.AF_INET,socket.soCK_STREAM)
server.bind((bind_ip,bind_port))
server.Listen(5)
while True:
clIEnt_sock,address = server.accept()
print 'Accepted connection from {0}:{1}'.format(address[0],address[1])
clIEnt_handler = threading.Thread(
target=handle_clIEnt_connection,args=(clIEnt_sock,) )
clIEnt_handler.start()
窗口第一次按预期显示并在两秒后消失。
但是,第二次调用 Tk()
永远不会返回。我猜这个问题来自在线程中(重新)创建一个 tkinter 根窗口,但我想了解为什么以及是否有办法让它工作。
这是一个小的测试客户端,用于触发窗口的出现:
import socket
host = "localhost"
port = 29800
s = socket.socket(socket.AF_INET,socket.soCK_STREAM)
s.connect((host,port))
s.sendall(b'abcde')
data = s.recv(1024)
s.close()
print('ClIEnt Received',repr(data))
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的关于 tkinter 和套接字/线程的理解问题全部内容,希望文章能够帮你解决关于 tkinter 和套接字/线程的理解问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。