Python Language
깡통
수색…
소개
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
, pack
및 grid
있습니다.
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()
pack
과 grid
를 같은 프레임 안에 섞어서는 안됩니다! 그렇게하면 응용 프로그램 교착 상태가 발생합니다!