Я начал разрабатывать некоторые графические интерфейсы на python не так давно и наконец решил, что знаю достаточно, чтобы написать полный графический интерфейс с менеджером геометрии сетки.
Я был удивлен, увидев, что при попытке расширить рамку сетки до краев окна с помощью аргумента sticky="nsew"
это не сработало, и все элементы сетки остались в левом верхнем углу экрана. .
Вы можете проверить мой код и некоторые скриншоты ниже.
Чтобы решить эту проблему, я пробовал различные решения, включая удаление аргумента sticky
(строка 7), однако это портит цвет фона, и рамка не распространяется на края окна.
Как я могу исправить эту проблему и заставить рамку расширяться до границ окна? Заранее спасибо! (;
Использование класса GridPage
- not centerd!
с использованием класса PackPage
и функции .pack()
- centerd, как мне нужно
Вот мой код для второго примера:
import tkinter as tk
class DefaultPage(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.grid(row=0, column=0, sticky="nsew")
class GridPage(DefaultPage):
def __init__(self, *args, **kwargs):
DefaultPage.__init__(self, *args, **kwargs)
tk.Button(self, text='hello!').grid()
tk.Label(self, text="I'm placed USING GRID").grid()
class PackPage(DefaultPage):
def __init__(self, *args, **kwargs):
DefaultPage.__init__(self, *args, **kwargs)
tk.Button(self, text='hi there!').pack()
tk.Label(self, text="I'm placed USING PACK").pack()
root = tk.Tk()
baseframe = tk.Frame(root)
baseframe.pack(side="top", fill="both", expand=True)
baseframe.grid_rowconfigure(0, weight=1)
baseframe.grid_columnconfigure(0, weight=1)
# frame = PackPage(baseframe, bg='yellow') # second screenshot. works as intended
frame = GridPage(baseframe, bg='yellow') # not centerd in the middle of the window.
root.mainloop()