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

Размер окна Tkinter по умолчанию может быть изменен, даже если вы задаете ширину и высоту при инициализации экземпляра окна.

import tkinter as tk

app = tk.Tk()

app.geometry('200x200')

app.mainloop()

Вы можете перетащить окно, созданное по приведенным выше кодам, чтобы получить различные размеры окон. Функция resizable должна быть использована для ограничения размеров ширины и высоты.

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()

Графический интерфейс, который мы ожидали, похож на приведенный ниже,

Каркас кинтера не подлежит изменению

Но что мы получаем после выполнения вышеуказанных кодов, так это то,

Рамка Tkinter Resizable

Фрейм backFrame автоматически изменяет размер, чтобы подогнать под прикрепленные к нему виджеты. Другими словами, виджеты внутри backFrame контролируют размер своего родительского кадра.

Вы можете отключить изменение размера фрейма к его виджетам, установив pack_propagate(0).

Правильный код для замораживания размера кадра,

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()

Сопутствующая статья - Tkinter Geomertry

  • Как создать полноэкранное окно в Tkinter
  • comments powered by Disqus