我目前正在python中创建一个聊天应用程序。我有两个单独的代码:一个用于服务器,一个用于客户端。服务器脚本正在获取连接的新客户端的登录数据,而另一个线程则管理他必须接收和发送的消息。
客户端应用程序被制作成一个类并且运行良好,除了当脚本请求UI显示时,唯一的新窗口是空的:
def __init__(self, master):
self.nr=0
self.frameul=self.tbox=self.txt=self.scrollbar=self.button=self.roottk=[0]*20
self.OameniSiIduri={}
self.LoginUI(master)
self.framestate=""
def ChatUI(self, peer_id):
no=self.no
self.no+=1
self.PeoplesAndId[peer_id]=no
self.base[no]=Toplevel()
self.theframe[no] = Frame(self.base[no])
self.theframe[no].pack()
self.entry[no] = Entry(self.theframe[no], width=95)
self.tbox[no] = Text(self.theframe[no], state=DISABLED, wrap=WORD)
self.button[no] = Button(self.theframe[no], text="Send", fg="green", command=lambda x=self.entry[no].get(), y=peer_id, z=self.tbox[nr]: self.Sendmsg(x,y,z), width=10)
self.tbox[no].pack(side=TOP, fill=X)
self.button[no].pack(side=RIGHT)
self.entry[no].pack(side=LEFT)
.....
声明所有变量和函数。任何人都可以给我一个关于这个问题的原因是什么的提示吗?
答案 0 :(得分:0)
在整个代码搜索后发现自己的错误。显然,如果我使用这一行:
self.theframe=self.tbox=self.entry=self.scrollbar=self.button=self.base=[0]*20
所有对象都指向相同的值。
答案 1 :(得分:0)
我的猜测是,创建UI的代码会抛出您没有看到的错误。例如,您是否正确导入DISABLED
和WORD
?如果没有,代码将在创建框架之后但在创建其他窗口小部件之前失败,从而为您留下一个空的窗口小部件。
调试此方法的一种方法是为每个顶层和框架提供不同的颜色。这可以让你看到哪些是可见的,哪些不是 - 也许你正在看一个窗口或框架,并认为这是一件事,当它是其他东西。