【问题标题】:Help with a chat python application帮助一个聊天 python 应用程序
【发布时间】:2011-08-31 21:13:27
【问题描述】:

我目前正在用 python 制作一个聊天应用程序。我有 2 个单独的代码:一个用于服务器,一个用于客户端。服务器脚本正在获取连接的新客户端的登录数据,并在另一个线程中管理他必须接收和发送的消息。

客户端应用程序被制作成一个类并且运行良好,除了当脚本请求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)
    .....

声明了所有变量和函数。谁能给我提示一下这个问题的原因是什么?

【问题讨论】:

  • 你打过mainloop()吗?
  • 是的,我已经添加了所有需要的东西。正如我所说,第二个窗口出现但它是空的(mint 11,python 2.6)
  • 除了传递给按钮的xyz参数外,它对我来说非常适合。
  • 我可以发布整个代码,但其中一部分是其他语言(主要是变量和字符串)
  • 这可能会有所帮助,谢谢。如果您不想发布整个课程,只需__init__ 即可(但发布整个课程会使调试变得更加简单)。

标签: python user-interface tkinter


【解决方案1】:

通过代码搜索了一夜后发现自己的错误。显然,如果我使用这条线:

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

所有对象都指向同一个值。

【讨论】:

    【解决方案2】:

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

    调试此问题的一种方法是为每个顶层和框架赋予不同的颜色。这让您可以看到哪些是可见的,哪些是不可见的——也许您正在看一个窗口或框架,并认为它是一回事,而实际上它是另一回事。

    【讨论】:

    • 在 IDLE 中进行一些调试后找到了解决方案,但感谢您的回答
    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2021-03-10
    • 2013-10-18
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多