我使用这个论坛已经有一段时间了,但这是我第一次问问题,因为我还没有找到一个好的方法来解决我的困难,因为我希望这个问题对其他人也有用。在
我正在实现一个简单的通知板,即一个窗口,显示来自套接字连接的消息。这个板用红色打印最后收到的信息,蓝色打印旧信息,最多10条。当客户端发送的消息为“Q”时,连接终止,通知板被销毁。在
我使用的是Tkinter、线程和套接字,但行为并不顺利(刷新通知板需要一段时间)。我可以想到几个问题:处理连接的线程没有关闭;窗口的更新是通过销毁并重新创建顶层来执行的。不幸的是,我不明白这些问题是否是问题的根源。在
以下是客户端的代码,非常简单:
#!/usr/bin/env python
import socket
HOST = '' # Symbolic name meaning the local host
PORT = 24073 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST,PORT))
while True:
message = raw_input('Enter your command (Q=quit): ')
s.send(message)
reply = s.recv(1024)
if reply=='Q':
print 'Request to disconnect was received.'
break
else :
print reply
s.close()
这是服务器。服务器实现了一个处理通知板特性的类,一个用于套接字连接的线程,最后实现了带有mainloop()
的主要部分。在
我使用的是python2.7.5。在
最后,这是一个次要的问题,我试图用不同的颜色在消息的左边显示每个消息的时间戳。在我看来,在同一个标签上不可能有不同颜色的文本,所以我在for
循环中创建了其他带有时间戳的标签。我试图使用.grid(column=0)
和.grid(column=1)
将时间戳和消息标签一个挨一个地显示,但是它们不是一个挨着一个而是一个在另一个下面,我还不知道为什么。在
如你所知,我不是一个熟练的程序员,而且绝对是Python的新手。。。在
提前谢谢谁会给我一些建议,我希望这个问题对很多人有用。在
好吧,似乎我通过采纳别人的问题、建议和代码找到了一个解决方案。外观上可能没有什么不同。 在GUI中,最值得注意的是,我预加载了所有标签,然后只修改了文本。 在穿线部分,这完全改变了。请看下面。在
客户与问题中的客户相同。在
我不确定我的代码是否是最优雅的代码(好吧,让我们这样说吧。。。不是的!),但它似乎起到了作用。尽管如此,我还是希望得到你们的反馈,因为我相信我忽略了很多问题,而且事情本来可以用更简单的方式来完成。:)
相关问题 更多 >
编程相关推荐