Использование self.pack и self.grid работает без классов, но не работает с ними - PullRequest
0 голосов
/ 29 мая 2020

Итак, я попытался использовать Tkinter Button Alignment in Grid , чтобы создать панель инструментов, но разница в том, что я использую классы. Итак, пока они используют frame.pack и button.grid, я получаю сообщение об ошибке использования как pack, так и grid. Вот мой код:

class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.master.title('Hi!')
        self.master.configure(bg='dark grey')
        self.pack(fill=X, side=TOP)
        self.create_toolbar()

    def create_toolbar(self):
        Home = Button(text='Home', bd=1)
        About = Button(text='About', bd=1)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(1, weight=1)

        Home.grid(row=0, column=0, sticky=W+E)
        About.grid(row=0, column=1, sticky=W+E)

1 Ответ

1 голос
/ 29 мая 2020

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

Решение здесь состоит в том, чтобы установить master=self, когда вы объявляете свои виджеты, а затем, когда вы go помещаете виджеты в объект tk.Frame, вы можете использовать сетку.

...