Tkinter Frame grid_propagate не работает,

Рейтинг: 0Ответов: 1Опубликовано: 12.03.2023

В питоне у меня есть такой код для интерфейса моего приложения:

class MainApp(tkinter.Tk):
    def init(self):
        super(MainApp, self).init()
        
def main_window(self):
    # Фреймы для вкладок
    add_mods_frame = tkinter.Frame(self, width=1280, height=315)  # Фрейм вкладки добавить моды
    change_mod_structure_frame = tkinter.Frame(self)  # Фрейм вкладки изменить конфигурацию мода
    settings_frame = tkinter.Frame(self)  # Фрейм вкладки настройки
    header_frame = tkinter.Frame(self, width=1280, height=70)  # Фрейм header
    header_frame.configure(background='#1f1f1f')
    # Изменение цвета фона в окне
    self.configure(background='#1f1f1f')
    # Создание стиля
    mystyle = ttk.Style()
    mystyle.theme_create("MyAppStyle", parent="alt", settings={
        "TNotebook": {"configure": {"background": "#212224",
                                    "borderwidth": "0",
                                    "tabmargins": [0, 0, 0, 0]}},
        "TNotebook.Tab": {"configure": {"padding": ["26", "15"],
                                        "font": ('Roboto/Roboto_Bold.ttf', '20', 'bold'),
                                        "foreground": "#a9b2b7",
                                        "tabsmargin": [0, 0, 0, 0],
                                        "background": "#28292c",
                                        "borderwidth": "0",
                                        "focuscolor": "#212224"},
                          "map": {"background": [('active', '#2f3634'), ('selected', '#212224')],
                                  "foreground": [('active', "#a8b8a6"), ('selected', "#81878b")],
                                  "focuscolor": [('active', "#2f3634")]}},
        "TButton": {"configure": {"background": "#33393f",
                                  "foreground": "#9ca9a2",
                                  "font": ('Roboto/Roboto_Bold.ttf', '20', 'bold'),
                                  "padding": ["26", "12"]},
                    "map": {"background": [('pressed', '#16232d')],
                            "foreground": [('pressed', '#82978c')]},
                    "layout": [('Button.border', {'sticky': 'nswe', 'border': '1', 'children':
                        [('Button.padding', {'sticky': 'nswe', 'children':
                            [('Button.label', {'sticky': 'nswe'})]})]})]}})
    mystyle.theme_use("MyAppStyle")
    # header
    header_tab = ttk.Notebook(header_frame)
    header_button_compile_mods = ttk.Button(header_frame, text="Создать моды", command=self.create_mods)
    header_tab.add(add_mods_frame)
    header_tab.add(change_mod_structure_frame)
    header_tab.add(settings_frame)
    header_tab.tab(0, text='Добавить мод')
    header_tab.tab(1, text='Изменить состав мода')
    header_tab.tab(2, text='Настройки')
    header_frame.grid(row=0, column=0)
    header_frame.grid_propagate(False)
    header_tab.pack(side='left')
    header_button_compile_mods.pack(side='right')
    # Фрейм добавление модов
    standart_item_label = ttk.Label(add_mods_frame, text='Стандартная Вещь')
    custom_item_label = ttk.Label(add_mods_frame, text='Название вещи скина')
    mod_name_label = ttk.Label(add_mods_frame, text='Название модификации')
    standart_item_field = ttk.Entry(add_mods_frame)
    custom_item_field = ttk.Entry(add_mods_frame)
    mod_name_field = ttk.Entry(add_mods_frame)
    standart_item_label.grid(row=0, column=0)
    custom_item_label.grid(row=1, column=0)
    mod_name_label.grid(row=2, column=0)
    standart_item_field.grid(row=0, column=1)
    custom_item_field.grid(row=1, column=1)
    mod_name_field.grid(row=2, column=1)
    tkinter.mainloop()

Как видите, для header_frame я использую grid_propagate(False), чтобы он не менял свой размер, но это не работает, width и height для него просто не работают.

Ответы

▲ 0

Необходимо было использовать метод pack_propagate, т.к именно методом pack я располагал элементы внутри моего фрейма.