帮助解决聊天室Python应用问题

0 投票
2 回答
837 浏览
提问于 2025-04-17 00:59

我现在正在用Python制作一个聊天应用程序。我有两个独立的代码,一个是服务器端的,另一个是客户端的。服务器的代码负责接收新连接的客户端的登录信息,并在另一个线程中处理它需要接收和发送的消息。

客户端的应用程序是用一个类来实现的,运行得很好,只是当脚本请求显示用户界面时,弹出的窗口却是空的:

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

我猜,负责创建用户界面的代码可能出错了,但你没有看到这个错误。比如说,你有没有正确导入 DISABLEDWORD 呢?如果没有,代码可能在创建窗口后出错,但在创建其他小部件之前就停止了,这样你就只会看到一个空的小部件。

调试这个问题的一种方法是给每个顶层窗口和框架设置不同的颜色。这样你就能看到哪些是可见的,哪些是不可见的——也许你正在看一个窗口或框架,以为它是某个东西,其实它可能是别的东西。

0

我昨晚通宵查代码,终于发现了我的错误。显然,如果我使用这一行代码:

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

那么所有的对象都会指向同一个值。

撰写回答