#python-3.x #user-interface #tkinter
#python-3.x #пользовательский интерфейс #tkinter
Вопрос:
Я нахожусь на macOS 10.15.7 и только что обнаружил, что когда я запускаю свое приложение, кнопки работают отлично, независимо от того, насколько большим я делаю окно. Однако, когда я перевожу окно в полноэкранный режим, кнопки регистрируют щелчки внутри окна примерно на 20 пикселей ниже того места, где отображается виджет. Кто-нибудь еще сталкивался с этой проблемой? Я использую диспетчер геометрии сетки, sticky="we"
поэтому я не думаю, что проблема в том, как я добавил кнопки. Я также вызывал grid_rowconfigure(i, weight=1)
каждую строку моего приложения для выполнения соответствующего выравнивания по вертикали при растяжении.
Вот небольшой фрагмент, который показывает, как я структурировал приложение.
import tkinter as tk, tkinter.ttk as ttk
class Application(tk.Tk):
def __init__(self):
super().__init__()
container = ttk.Frame(self)
container.pack(fill='both', expand=True)
self.frames = {}
for frame in (Dashboard, PageOne, PageTwo, PageThree):
f = frame(container, self)
self.frames[frame] = f
f.grid(column=0, row=0, sticky="nswe")
self.switch_page(Dashboard)
def switch_page(self, frame):
f = self.frames[frame]
f.tkraise()
class Dashboard(ttk.Frame):
def __init__(self, master, controller):
super().__init__(master)
self.master = master
button1 = ttk.Button(self, text="Page One",
command=lambda: controller.switch_page(PageOne))
button1.grid(column=1, row=0, sticky="we")
button2 = ttk.Button(self, text="Page Two",
command=lambda: controller.switch_page(PageTwo))
button2.grid(column=1, row=1, sticky="we")
button3 = ttk.Button(self, text="Page Three",
command=lambda: controllerswitch_page(PageThree))
button3.grid(column=1, row=2, sticky="we")
ttk.Label(self).grid(column=0, row=0, rowspan=3)
ttk.Label(self).grid(column=2, row=0, rowspan=3)
class PageOne(ttk.Frame):
def __init__(self, master, controller):
super().__init__(master)
self.master = master
ttk.Button(self, text="Back to home",
command=lambda: controller.switch_page(Dashboard)
).pack()
class PageTwo(ttk.Frame):
def __init__(self, master, controller):
super().__init__(master)
self.master = master
ttk.Button(self, text="Back to home",
command=lambda: controller.switch_page(Dashboard)
).pack()
class PageThree(ttk.Frame):
def __init__(self, master, controller):
super().__init__(master)
self.master = master
ttk.Button(self, text="Back to home",
command=lambda: controller.switch_page(Dashboard)
).pack()
Кроме того, я понял, что я прокомментировал вызовы grid.row_configure
, поэтому я не считаю, что это способствует проблеме. Опять же, проблема не возникает с приложением в целом, только когда я нажимаю полноэкранную кнопку в самом окне.
Комментарии:
1. Пожалуйста, покажите нам минимальный пример.
2. @jizhihaoSAMA Я обновил вопрос, включив пример структуры моего приложения