帮助聊天python应用程序

时间:2011-08-31 21:13:28

标签: python user-interface tkinter

我目前正在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)
    .....

声明所有变量和函数。任何人都可以给我一个关于这个问题的原因是什么的提示吗?

2 个答案:

答案 0 :(得分:0)

在整个代码搜索后发现自己的错误。显然,如果我使用这一行:

self.theframe=self.tbox=self.entry=self.scrollbar=self.button=self.base=[0]*20

所有对象都指向相同的值。

答案 1 :(得分:0)

我的猜测是,创建UI的代码会抛出您没有看到的错误。例如,您是否正确导入DISABLEDWORD?如果没有,代码将在创建框架之后但在创建其他窗口小部件之前失败,从而为您留下一个空的窗口小部件。

调试此方法的一种方法是为每个顶层和框架提供不同的颜色。这可以让你看到哪些是可见的,哪些不是 - 也许你正在看一个窗口或框架,并认为这是一件事,当它是其他东西。