Как сделать чтоб при изменении размера окна tkinter интерфейс сдвигался вместе с границей
Столкнулся с проблемой что если сделать окно tkinter и в нем сделать интерфейс с кнопками, текстом, entry и тому подобное, то при изменении размера окна кнопки не будут сдвигаться, например:
на этих скриншотах видно что при увиличении окна кнопки и текст меняют свое положение, и кнопка например зашла на флажки, надо сделать так чтоб при увиличении окна кординаты интерфейса менялись
Ответы (2 шт):
Вы кажись вы используйте метод .pack(). У него довольно неоднозначное размещение виджетов. Или вы комбинируете несколько методов.
Что бы ничего не сдвигалось, пользуйтесь .grid() или .place() без -rel(x/y/width/height) параметров.
Про них можно посмотреть на:
https://younglinux.info/tkinter/grid
https://younglinux.info/tkinter/place
Можно вообще сделать так чтобы окошко не раздвигалось и сдвигалось, с помощью метода window.resizable(False, False)
Пример реализации через grid. Суть в том, чтобы через параметр weight задать, чтобы нужные колонки/строки автоматически расширялись при увеличении размера окна. Например, для последней строки задаем weight=1, прилипание кнопки к левой нижней границе ячейки - получается кнопка закрепленная в левом нижнем углу окна.
import tkinter as tk
root = tk.Tk()
root.minsize(200, 210)
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)
tk.Label(text="Например").grid(row=0, column=0, columnspan=2)
tk.Label(text="Например").grid(row=1, column=0, columnspan=2)
tk.Label(text="Например").grid(row=2, column=1)
check_frame = tk.Frame()
check_frame.grid(row=3, column=0, sticky="W")
tk.Checkbutton(check_frame, text="Например 1").pack()
tk.Checkbutton(check_frame, text="Например 2").pack()
tk.Checkbutton(check_frame, text="Например 3").pack()
tk.Checkbutton(check_frame, text="Например 4").pack()
tk.Checkbutton(check_frame, text="Например 5").pack()
tk.Button(text="Например").grid(row=4, column=0, sticky="SW")
root.rowconfigure(4, weight=1)
root.mainloop()
Окно в минимальном размере (заданном с помощью метода minsize):


