Как установить окно Tkinter с постоянным размером

Размер окна Tkinter по умолчанию может быть изменен, даже если вы задаете ширину и высоту при инициализации экземпляра окна.
import tkinter as tk
app = tk.Tk()
app.geometry('200x200')
app.mainloop()
Вы можете перетащить окно, созданное по приведенным выше кодам, чтобы получить различные размеры окон. Функция resizable
должна быть использована для ограничения размеров ширины и высоты.
resizable(self, width=None, height=None)
- Инструктируйте менеджера окон, может ли эта ширина быть изменена в WIDTH или HEIGHT. Оба значения являются булевыми.import tkinter as tk
app = tk.Tk()
app.geometry('200x200')
app.resizable(width=0, height=0)
app.mainloop()
app.resizable(width=0, height=0)
не позволяет изменять размер как ширину, так и высоту.
Установите фрейм Tkinter с постоянным размером
Рамка внутри окна немного похожа на окно, в том смысле, что она автоматически изменяет размер, даже если вы определяете ширину и высоту этой рамки.
import tkinter as tk
app = tk.Tk()
app.geometry('200x200')
app.resizable(0, 0)
backFrame = tk.Frame(master=app,
width=200,
height=200,
bg='blue').pack()
button1 = tk.Button(master=backFrame,
text='Button 1',
bg='blue',
fg='red').pack()
button2 = tk.Button(master=backFrame,
text='Button 2',
bg='blue',
fg='green').pack()
button3 = tk.Label(master=backFrame,
text='Button 3',
bg='red',
fg='blue').pack()
app.mainloop()
Графический интерфейс, который мы ожидали, похож на приведенный ниже,
Но что мы получаем после выполнения вышеуказанных кодов, так это то,
Фрейм backFrame
автоматически изменяет размер, чтобы подогнать под прикрепленные к нему виджеты. Другими словами, виджеты внутри backFrame
контролируют размер своего родительского кадра.
Вы можете отключить изменение размера фрейма к его виджетам, установив pack_propagate(0)
.
propagate(self, flag=['_noarg_'])
- Установка или получение статуса для распространения геометрической информации. Булевый аргумент указывает, будет ли геометрическая информация ведомых устройств определять размер этого виджета. Если аргумент не указан, то будет возвращена текущая настройка.Правильный код для замораживания размера кадра,
import tkinter as tk
app = tk.Tk()
app.geometry('200x200')
app.resizable(0, 0)
backFrame = tk.Frame(master=app,
width=200,
height=200,
bg='blue')
backFrame.pack()
backFrame.propagate(0)
button1 = tk.Button(master=backFrame,
text='Button 1',
bg='blue',
fg='red').pack()
button2 = tk.Button(master=backFrame,
text='Button 2',
bg='blue',
fg='green').pack()
button3 = tk.Label(master=backFrame,
text='Button 3',
bg='red',
fg='blue').pack()
app.mainloop()
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn