Метод pack() в Tkinter

ЗИЛ

Новичок
Пользователь
Янв 3, 2022
43
1
8
Памагити тупарю.
Никак не соображу что я делаю не так.
Есть код:
Python:
from tkinter import *

class Duble(Frame):

    def __init(self, parent, *args, **kwargs):

        super().__init__(parent, *args, **kwargs)

        self.text = Text(self, width = 100, height=100, bg = 'white')

        self.text.insert('end', '\nПервая строка\nВторая строка\nТретья строка\nЧетвёртая строка')

        self.sidebar = Text(self, bg='magenta', width=30)

        self.text.pack(side=RIGHT, fill=BOTH, expand=True)

        self.sidebar.pack(side=LEFT, fill=Y)

 
class Applic(Tk):

    def __init__(self, parent=None, *args, **kwargs):

        super().__init__(parent, *args, **kwargs)

        self.duble = Duble(self)

        self.duble.pack(fill=BOTH, expand=True)

if __name__ == "__main__":

    applic = Applic()
    applic.mainloop()

При запуске получаю пустое место, а в трее вижу что всё отработало как надо.
Рад любым мыслям.
 
Последнее редактирование:

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
В вашем коде есть небольшая опечатка в определении конструктора класса Duble. Вы использовали __init вместо __init__. Из-за этой опечатки конструктор класса Duble не вызывается, и поэтому виджеты внутри этого класса не создаются и не отображаются.

Вот исправленная версия вашего кода:

Python:
from tkinter import *

class Duble(Frame):

    def __init__(self, parent, *args, **kwargs):  # Исправлено здесь: __init__
        super().__init__(parent, *args, **kwargs)

        self.text = Text(self, width=100, height=100, bg='white')
        self.text.insert('end', '\nПервая строка\nВторая строка\nТретья строка\nЧетвёртая строка')
        self.sidebar = Text(self, bg='magenta', width=30)

        self.text.pack(side=RIGHT, fill=BOTH, expand=True)
        self.sidebar.pack(side=LEFT, fill=Y)

class Applic(Tk):

    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)

        self.duble = Duble(self)
        self.duble.pack(fill=BOTH, expand=True)

if __name__ == "__main__":
    applic = Applic()
    applic.mainloop()
 

ЗИЛ

Новичок
Пользователь
Янв 3, 2022
43
1
8
Блин, как мог так ступить?
И главное -- под носом не вижу ошибки.
Глаз уже замылился.
Спасибо.
 

Форум IT Специалистов