수색…


소개

Tkinter에서 공개 된 것은 Python에서 가장 많이 사용되는 GUI (Graphical User Interface) 라이브러리입니다. 이 주제에서는이 라이브러리 및 해당 기능의 올바른 사용법을 설명합니다.

비고

tkinter 모듈의 대문자는 Python 2와 3에서 다릅니다. Python 2의 경우 다음을 사용하십시오.

from Tkinter import *  # Capitalized

파이썬 3의 경우 다음을 사용하십시오 :

from tkinter import *  # Lowercase

파이썬 2와 3 모두에서 작동하는 코드의 경우,

try:
    from Tkinter import *
except ImportError:
    from tkinter import *

또는

from sys import version_info
if version_info.major == 2:
    from Tkinter import *
elif version_info.major == 3:
    from tkinter import *

자세한 내용은 tkinter 문서 를 참조하십시오.

최소한의 tkinter 어플리케이션

tkinter 는 Tk / Tcl GUI 라이브러리 주위에 래퍼를 제공하고 Python에 포함되어있는 GUI 툴킷입니다. 다음 코드는 tkinter 사용하여 새 창을 만들고 창 본문에 일부 텍스트를 배치합니다.

참고 : 파이썬 2에서 대문자 사용은 약간 다를 수 있습니다. 아래 비고 섹션을 참조하십시오.

import tkinter as tk

# GUI window is a subclass of the basic tkinter Frame object
class HelloWorldFrame(tk.Frame):
    def __init__(self, master):
        # Call superclass constructor
        tk.Frame.__init__(self, master)
        # Place frame into main window
        self.grid()
        # Create text box with "Hello World" text
        hello = tk.Label(self, text="Hello World! This label can hold strings!")
        # Place text box into frame
        hello.grid(row=0, column=0)

# Spawn window
if __name__ == "__main__":
    # Create main window object
    root = tk.Tk()
    # Set title of window
    root.title("Hello World!")
    # Instantiate HelloWorldFrame object
    hello_frame = HelloWorldFrame(root)
    # Start GUI
    hello_frame.mainloop()

기하학 관리자

Tkinter에는 지형 관리를위한 세 가지 메커니즘 인 place , packgrid 있습니다.

place 관리자는 절대 픽셀 좌표를 사용합니다.

pack 관리자는 위젯을 4면 중 하나에 배치합니다. 새 위젯은 기존 위젯 옆에 배치됩니다.

grid 관리자는 위젯을 동적 크기 조정 스프레드 시트와 유사한 그리드에 배치합니다.

장소

widget.place 의 가장 일반적인 키워드 인수는 다음과 같습니다.

  • x , 위젯의 절대 x 좌표
  • y , 위젯의 절대 y 좌표
  • height , 위젯의 절대 높이
  • width , 위젯의 절대 너비

place 를 사용하는 코드 예제 :

class PlaceExample(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.grid()
        top_text=Label(master,text="This is on top at the origin")
        #top_text.pack()
        top_text.place(x=0,y=0,height=50,width=200)
        bottom_right_text=Label(master,text="This is at position 200,400")
        #top_text.pack()
        bottom_right_text.place(x=200,y=400,height=50,width=200)
# Spawn Window
if __name__=="__main__":
    root=Tk()
    place_frame=PlaceExample(root)
    place_frame.mainloop()

widget.pack 은 다음 키워드 인수를 취할 수 있습니다.

  • expand , 부모가 남긴 공간을 채울 지 여부
  • fill , 모든 공간을 채우기 위해 확장할지 여부 (NONE (기본값), X, Y 또는 BOTH)
  • side , 포장 할면 (TOP (기본값), BOTTOM, LEFT 또는 RIGHT)

그리드

widget.grid 의 가장 일반적으로 사용되는 키워드 인수는 다음과 같습니다.

  • row , 위젯의 행 (기본값은 비어 있지 않음)
  • rowspan , 위젯이 연결된 열의 수 (기본값 1)
  • column , 위젯 열 (기본값 0)
  • columnspan , 위젯이 연결된 열 수 (기본값 1)
  • sticky 그리드 셀이 (N, NE, E, SE, S, SW, W, NW의 조합)보다 큰 경우, 여기서 위젯을 놓을

행과 열은 0으로 인덱싱됩니다. 행이 아래로 증가하고 열이 오른쪽으로 증가합니다.

grid 사용하는 코드 예제 :

from tkinter import *

class GridExample(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.grid()
        top_text=Label(self,text="This text appears on top left")
        top_text.grid() # Default position 0, 0
        bottom_text=Label(self,text="This text appears on bottom left")
        bottom_text.grid() # Default position 1, 0
        right_text=Label(self,text="This text appears on the right and spans both rows",
                         wraplength=100)
        # Position is 0,1
        # Rowspan means actual position is [0-1],1
        right_text.grid(row=0,column=1,rowspan=2)

# Spawn Window
if __name__=="__main__":
    root=Tk()
    grid_frame=GridExample(root)
    grid_frame.mainloop()

packgrid 를 같은 프레임 안에 섞어서는 안됩니다! 그렇게하면 응용 프로그램 교착 상태가 발생합니다!



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow