Помогите с приложением чат python - PullRequest
0 голосов
/ 01 сентября 2011

Я сейчас создаю чат-приложение на python.У меня есть 2 отдельных кода: один для сервера и один для клиента.Серверный скрипт получает данные для входа в систему новых клиентов, которые подключаются, и в другом потоке управляет сообщениями, которые он должен получать и отправлять.

Клиентское приложение превращается в класс и работает хорошо, за исключением того, что когдаскрипт запрашивает отображение интерфейса пользователя, единственное новое окно - пустое:

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 голосов
/ 01 сентября 2011

Я предполагаю, что код, создающий пользовательский интерфейс, выдает ошибку, которую вы не видите. Например, правильно ли вы импортируете DISABLED и WORD? В противном случае код завершится ошибкой после создания фрейма, но до создания других виджетов, оставляя вас с пустым виджетом.

Один из способов отладки - дать каждому верхнему уровню и создать отдельный цвет. Это позволяет вам видеть, какие видны, а какие нет - может быть, вы смотрите на окно или рамку и думаете, что это одно, а что-то другое.

0 голосов
/ 01 сентября 2011

Считал себя ошибкой после поиска всю ночь по коду. Видимо, если я использую эту строку:

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

Все объекты указывают на одно и то же значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...