程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了关于 tkinter 和套接字/线程的理解问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决关于 tkinter 和套接字/线程的理解问题?

开发过程中遇到关于 tkinter 和套接字/线程的理解问题的问题如何解决?下面主要结合日常开发的经验,给出你关于关于 tkinter 和套接字/线程的理解问题的解决方法建议,希望对你解决关于 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,请注明来意。