170 похожих чатов

Я использую tkinter для графического интерфейса. Есть класс Application, который наследуется

от tkinter.Tk.
Есть класс Window, который наследуется от tkinter.TopLevel.
Есть класс IPEntry, который наследуется от tkinter.Entry.
При попытке настроить валидацию введённого IP выдаёт ошибку AttributeError: "IPEntry" object has no attribute "tk".
Почему так? Все init вызывают init родительского класса, и так как они все наследуются от классов tkinter, то должны вести себя точно так же. Если я добавляю в Window обычный tkinter.Entry, он работает и валидация работает. Но если я пытаюсь унаследоваться от Entry, то он не может создать виджет.

3 ответов

15 просмотров
S0ZDATEL- Автор вопроса

Хотя я что tkinter.Entry, что своему IPEntry, который от него наследуется, передаю в качестве родительского виджета свой Window. Но судя по всему, tkinter.Entry принимает его как допустимого родителя, и получает свой атрибут tk, а мой IPEntry этого не делает, хотя он вызывает init родительского класса. Ничего не понимаю.

S0ZDATEL- Автор вопроса
S0ZDATEL
Хотя я что tkinter.Entry, что своему IPEntry, кото...

А, разобрался. Нужно вызывать register не самого виджета, а родителя.

S0ZDATEL- Автор вопроса
S0ZDATEL
А, разобрался. Нужно вызывать register не самого в...

Или нет... А, всё, понял теперь. Нельзя сразу регистрировать функцию, нужно сначала закончить инициализацию, и затем добавить валидацию через self.configure.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта