Tkinter колонка настроить вес не регулируется

1

Я новичок в модуле Tkinter. У меня есть опыт работы с PyQt5. Я играю с несколькими виджетами в своем фрейме. Они три кнопки, и я пытаюсь расширить их размер относительно размера окна. Для этого я использую w.columnconfigure(n, weight = 1). Это должно распространить 3 кнопки, которые у меня есть на окне Frame. Это код, который я запускаю. Я попытался с w.columnconfigure перед размещением виджетов в сетке и, как видно из опубликованного кода, после размещения виджетов в сетке. Я не заметил разницы или функциональности. Есть ли конвенция? В любом случае, оцените любое руководство!

    def create_widgets(self):
        """ Create three buttons that do nothing. """
        self.bttn1 = Button(self, text="I do nothing")

        self.bttn2 = Button(self)
        self.bttn2.configure(text="Me too!")   

        self.bttn3 = Button(self)
        self.bttn3["text"] = "Same here!"

        self.bttnCt = Button(self)
        self.bttnCt["text"] = "Total Clicks: 0"
        self.bttnCt["command"] = self.update_count

        self.bttn1.grid(row=0, column=0, sticky=W+E)
        self.bttn2.grid(row=0, column=1, sticky=W+E)
        self.bttn3.grid(row=0, column=2, sticky=W+E)
        self.bttnCt.grid(row=1, column=1, sticky=W+E)

        bttn_list = [self.bttn1, self.bttn2, self.bttn3, self.bttnCt]

        for k, i in enumerate(bttn_list):
            i.columnconfigure(k, weight=1)

        #self.bttn1.columnconfigure(0, weight=1)
        #self.bttn2.columnconfigure(1, weight=3)        
        #self.bttn3.columnconfigure(2, weight=1)
        #self.bttnCt.columnconfigure(3, weight=1) 
Теги:
python-3.x
tkinter

1 ответ

0

columnconfigure() или rowconfigure() применяются к окну или кадру, частью которых является виджет. Здесь вы применяете его на самой кнопке. Применять его на родителя в основном.

Вот небольшой пример.

import tkinter as tk

app = tk.Tk()

bttn1 = tk.Button(app, text="I do nothing")
bttn2 = tk.Button(app, text='Me too!')
bttn3 = tk.Button(app, text='Same here!')
bttnCt = tk.Button(app, text='Total Clicks: 0')

bttn1.grid(row=0, column=0, sticky="ew")
bttn2.grid(row=0, column=1, sticky="ew")
bttn3.grid(row=0, column=2, sticky="ew")
bttnCt.grid(row=1, column=1, sticky="ew")

bttn_list = [bttn1, bttn2, bttn3, bttnCt]

for i in range(len(bttn_list)):
    app.columnconfigure(i, weight=1) ## Not the button, but the parent

app.mainloop()

Изображение 174551

  • 0
    Спасибо. Я верю, что вы правы в своем ответе. Тем не менее, я застрял с семантикой. Я создаю свои кнопки, столбцы внутри класса. Корневое окно создается вне моего класса приложения. Корневое или «приложение» окно выступает в качестве мастера для моего класса приложений. class Application(Frame): ... root = Tk() root.title("... Expanding GUI ...") root.geometry("500x650") app = Application(root) root.mainloop()
  • 0
    Я попытался self.columnconfigure(i, weight=1) без удачи
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню