일정한 크기로 Tkinter 창을 설정하는 방법

Jinku Hu 2020년6월25일
일정한 크기로 Tkinter 창을 설정하는 방법

윈도우 인스턴스가 시작될 때 너비와 높이를 할당하더라도 Tkinter 윈도우 크기는 기본적으로 크기를 조정할 수 있습니다.

import tkinter as tk

app = tk.Tk()

app.geometry("200x200")

app.mainloop()

위의 코드로 만든 창을 끌어서 다른 창 크기를 얻을 수 있습니다. ‘크기 조정 가능’기능을 사용하여 너비와 높이 크기를 제한해야합니다.

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

우리가 예상 한 GUI 는 다음과 같습니다.

Tkinter 프레임 크기를 조정할 수 없음

그러나 위 코드를 실행 한 후에 얻는 것은

Tkinter 프레임 크기 조정 가능

프레임 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()
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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 Facebook

관련 문장 - Tkinter Geometry