소스 코드: Lib/tkinter/__init__.py Show
명령 줄에서 Tkinter 모듈¶대부분은, Tk 인터페이스 모듈 외에도, 또는, 더 자주: classtkinter. Tk (screenName=None, baseName=None, className='Tk',
useTk=1)¶
tkinter. Tcl (screenName=None, baseName=None, className='Tk',
useTk=0)¶
Tk 지원을 제공하는 다른 모듈은 다음과 같습니다: tkinter.scrolledtext
세로 스크롤 막대가 내장된 Text 위젯. tkinter.colorchooser 사용자가 색상을 선택할 수 있게 하는 대화 상자. tkinter.commondialog 여기에 나열된 다른 모듈에 정의된 대화 상자의 베이스 기본 클래스. tkinter.filedialog 사용자가 열거나 저장할 파일을 지정할 수 있도록 하는 일반 대화 상자입니다. tkinter.font 글꼴과 관련된 작업에 도움이 되는 유틸리티. tkinter.messagebox 표준 Tk 대화 상자에 액세스합니다. tkinter.simpledialog 기본 대화 상자와 편리 함수. tkinter.dnd
turtle Tk 창에서의 터틀(turtle) 그래픽. Tkinter 구명조끼¶이 절은 Tk나 Tkinter에 대한 철저한 자습서가 되고자 하는 것은 아닙니다. 오히려, 시스템에 관한 몇 가지 입문 오리엔테이션을 제공하는 임시방편입니다. 크레딧:
이 절을 사용하는 방법¶이 절은 두 부분으로 구성되어 있습니다: 첫 번째 (대략) 절반은 배경 자료를 다루고, 두 번째 절반은 따다 쓰기에 간편한 레퍼런스입니다. “어쩌고를 어떻게 해야 합니까?”와 같은 형식의 질문에 대답하려 할 때, Tk에서 직접 “어쩌고” 하는 법을 알아내고, 이것을
다시 해당
간단한 Hello World 프로그램¶import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.hi_there = tk.Button(self) self.hi_there["text"] = "Hello World\n(click me)" self.hi_there["command"] = self.say_hi self.hi_there.pack(side="top") self.quit = tk.Button(self, text="QUIT", fg="red", command=self.master.destroy) self.quit.pack(side="bottom") def say_hi(self): print("hi there, everyone!") root = tk.Tk() app = Application(master=root) app.mainloop() Tcl/Tk (아주 빨리) 훑어보기¶클래스 계층 구조가 복잡해 보입니다만, 실제로는 응용 프로그램 프로그래머는 거의 항상 계층 구조의 바닥에 있는 클래스를 참조합니다. 노트:
이 레퍼런스 자료를 사용하기 위해, Tk의 짧은 구문을 읽는 방법과 Tk 명령의 여러 부분을 식별하는 방법을 알아야 할 때가 있을 것입니다. (아래에 나오는 것의
Tk 스크립트는 Tcl 프로그램입니다. 모든 Tcl 프로그램과 마찬가지로, Tk 스크립트는 스페이스로 구분된 토큰 목록일 뿐입니다. Tk 위젯은 단지 그것의 클래스(class), 그것을 구성하는 데 도움이 되는 옵션(options) 및 그것이 유용한 일을 하도록 하는 액션(actions)일 뿐입니다. Tk에서 위젯을 만들려면, 명령은 항상 다음과 같은 형식입니다: classCommand newPathname options 어떤 종류의 위젯(버튼, 레이블, 메뉴…)을 만들지를 나타냅니다 newPathname이 위젯의 새 이름입니다. Tk의 모든 이름은 고유해야 합니다. 이 기능을 강제하기 위해, Tk의 위젯은 파일 시스템의 파일과 마찬가지로, 경로명(pathnames)으로 이름이 지정됩니다. 최상위 수준 위젯, 루트(root), 는 위젯의 모양과 때에 따라 그 동작을 구성합니다. 옵션은 플래그와 값의 목록 형태로 제공됩니다. 플래그는 유닉스 셸 명령 플래그처럼 ‘-‘가 앞에 오고, 값이 두 단어 이상이면 값을 따옴표로 묶습니다. 예를 들면: button .fred -fg red -text "hi there" ^ ^ \______________________/ | | | class new options command widget (-opt val -opt val ...) 일단 만들어지면, 위젯에 대한 경로명이 새로운 명령이 됩니다. 이 새로운 위젯 명령(widget command)은 액션(action)을 수행할 새 위젯을 얻는 데 필요한 프로그래머의 손잡이입니다. C에서, 이것을 someAction(fred, someOptions)로 표현하고, C++에서는, fred.someAction(someOptions)으로 표현하며, Tk에서는, 다음과 같이 표현합니다: .fred someAction someOptions 객체 이름 예상대로, someAction의 유효한 값은 위젯의 클래스에
따라 다릅니다: someOptions의 합법적인 값은 액션에 따라 다릅니다. 기본 Tk를 Tkinter로 매핑하기¶Tk의 클래스 명령은 Tkinter의 클래스 생성자에 대응합니다. button .fred =====> fred = Button() 객체의 마스터(master)는 생성 시 부여된 새로운 이름에 함축되어 있습니다. Tkinter에서, 마스터는 명시적으로 지정됩니다. button .panel.fred =====> fred = Button(panel) Tk의 구성 옵션은 뒤에 값이 오는 하이픈이 붙은 태그의 목록입니다. Tkinter에서 옵션은 인스턴스 생성자에서 키워드 인자로, 구성(configure) 호출에서는 키워드 인자로, 설정된 인스턴스에서는 딕셔너리 스타일의 인스턴스 인덱스로 지정됩니다. 옵션 설정에 대해서는 옵션 설정 절을 참조하십시오. button .fred -fg red =====> fred = Button(panel, fg="red") .fred configure -fg red =====> fred["fg"] = red OR ==> fred.config(fg="red") Tk에서, 위젯에 대한 작업을 수행하려면, 위젯 이름을 명령으로 사용하고, 그
뒤에 액션 이름이 옵니다, 인자(옵션)가 붙는 것도 가능합니다. Tkinter에서는, 위젯의 액션을 호출하기 위해 클래스 인스턴스의 메서드를 호출합니다. 주어진 위젯이 수행할 수 있는 액션(메서드)은 .fred invoke =====> fred.invoke() 패커(packer)(지오메트리 관리자, geometry manager)에게 위젯을 전달하려면, pack을 선택적 인자로 호출합니다. Tkinter에서, Pack 클래스는 이 모든 기능을 담고 있으며, 다양한 형태의 pack 명령이 메서드로 구현됩니다. pack .fred -side left =====> fred.pack(side="left") Tk와 Tkinter의 관계¶위에서 아래로: 여러분의 응용 프로그램이 여기에 있습니다 (파이썬)파이썬
응용 프로그램이 이 호출(예를 들어, 버튼 위젯을 만든다고 합시다)은 파이썬으로 작성된 이 명령과 인자는 이 C 함수는 Tk 라이브러리를 구성하는 C 함수를 포함하는 다른 C 모듈을 호출할 수 있습니다. Tk는 C와 약간의 Tcl로 구현됩니다. Tk 위젯의 Tcl 부분은 어떤 기본 동작을 위젯에 연결하는 데 사용되며, 파이썬 Tk 위젯의 Tk 부분은 최종 … 로의 매핑을 구현합니다 Xlib (C)화면에 그래픽을 그리기 위한 Xlib 라이브러리. 간편한 레퍼런스¶옵션 설정¶옵션은 위젯의 색상과 테두리 너비와 같은 것을 제어합니다. 옵션은 세 가지 방법으로 설정할 수 있습니다: 객체 생성 시, 키워드 인자 사용하기fred = Button(self, fg="red", bg="blue")객체 생성 후, 딕셔너리 인덱스처럼 옵션 이름을 다루기 fred["fg"] = "red" fred["bg"] = "blue"config() 메서드를 사용하여 객체 생성 이후 여러 어트리뷰트를 갱신하기. fred.config(fg="red", bg="blue") 주어진 옵션과 그 동작에 대한 완전한 설명은, 해당 위젯의 Tk 매뉴얼 페이지를 참조하십시오. 매뉴얼 페이지는 각 위젯에 대해 “표준 옵션(STANDARD OPTIONS)”과 “위젯 특정 옵션(WIDGET SPECIFIC OPTIONS)”을 나열합니다. 전자는 많은 위젯에 공통적인 옵션 목록이며, 후자는 그 위젯에만 적용되는 옵션입니다. 표준 옵션은 options(3) 매뉴얼 페이지에 설명되어 있습니다. 이 문서에서는 표준과 위젯 특정 옵션을 구분하지 않습니다. 일부 옵션은 일부 위젯에 적용되지 않습니다. 특정 위젯이 특정 옵션에 응답하는지는 위젯의 클래스에 따라 다릅니다; 버튼에는 주어진 위젯이 지원하는 옵션은 위젯의 매뉴얼 페이지에 나열되거나, 실행 시간에 인자 없이
예: >>> print(fred.config()) {'relief': ('relief', 'relief', 'Relief', 'raised', 'groove')} 물론, 인쇄된 딕셔너리에는 사용 가능한 모든 옵션과 해당 값이 포함됩니다. 이것은 예시일뿐입니다. 패커¶패커(packer)는 Tk의 지오메트리 관리 메커니즘 중 하나입니다. 지오메트리 관리자는 컨테이너(위젯들의 공동 master) 내에서의 위젯의 상대 위치를 지정하는 데 사용됩니다. 더 성가신 placer(잘 사용되지 않고, 여기서는 다루지 않습니다) 와는 달리, 패커는 위에, 왼쪽에, 채우기 등의 정성적(qualitative) 관계 규정을 취하고, 여러분을 위해 정확한 배치 좌표를 결정하기 위한 모든 작업을 수행합니다. 모든 master 위젯의 크기는 안에 있는 “슬레이브(slave) 위젯”의 크기에 의해 결정됩니다. 패커는 슬레이브 위젯이 패킹 되는 마스터 내부에 나타나는 위치를 제어하는 데 사용됩니다. 원하는 배치를 얻기 위해 프레임에 위젯을 팩하고, 프레임을 다른 프레임에 팩할 수 있습니다. 또한, 일단 팩 되면, 점진적인 구성의 변경을 수용하기 위해 배치가 동적으로 조정됩니다. 위젯은 지오메트리 관리자로 지오메트리를 지정할 때까지 표시되지 않습니다. 지오메트리 명세를 빠뜨리는 것은 초기에 흔한 실수이고, 위젯을 만들었지만, 아무것도 나타나지 않을 때 놀라게 됩니다. 위젯은 예를 들어 패커의 pack() 메서드는 컨테이너 내에서 위젯이 표시되는 위치와 메인 응용 프로그램 윈도우의 크기가 조정될 때 어떻게 동작할지를 제어하는 키워드 옵션/값 쌍으로 호출할 수 있습니다. 여기 몇 가지 예가 있습니다: fred.pack() # defaults to side = "top" fred.pack(side="left") fred.pack(expand=1) 패커 옵션¶패커와 그것이 받을 수 있는 옵션에 대한 더 자세한 정보는 매뉴얼 페이지와 John Ousterhout의 책의 183쪽을 참조하십시오. anchor앵커(anchor)형. 패커가 각 슬레이브를 컨테이너에 넣을 위치를 나타냅니다. expand불리언(boolean), 유효한
값: 거리(distance) - 슬레이브 위젯의 각 변의 내부 패딩을 지정합니다. padx와 pady거리(distance) - 슬레이브 위젯의 각 변의 외부 패딩을 지정합니다. side유효한 값: 위젯 변수 결합하기¶(텍스트 입력 위젯과 같은) 일부 위젯의
현재 값 설정은 특수 옵션을 사용하여 응용 프로그램 변수에 직접 연결할 수 있습니다. 이 옵션은 불행히도, 이미 정의된 Variable의 유용한 서브 클래스가 많이 있습니다: 예를 들면: import tkinter as tk class App(tk.Frame): def __init__(self, master): super().__init__(master) self.pack() self.entrythingy = tk.Entry() self.entrythingy.pack() # Create the application variable. self.contents = tk.StringVar() # Set it to some value. self.contents.set("this is a variable") # Tell the entry widget to watch this variable. self.entrythingy["textvariable"] = self.contents # Define a callback for when the user hits return. # It prints the current value of the variable. self.entrythingy.bind('<Key-Return>', self.print_contents) def print_contents(self, event): print("Hi. The current entry content is:", self.contents.get()) root = tk.Tk() myapp = App(root) myapp.mainloop() 창 관리자¶Tk에는, 창 관리자와 상호 작용하기 위한 유틸리티 명령인 주어진 위젯을 포함하는 최상위 창을 가져오려면, 종종 위젯의 마스터를 참조하는 것만으로도 됩니다. 물론 위젯이 프레임 안에 팩 되어 있다면, 마스터는 최상위 창을 나타내지 않을 것입니다. 임의의 위젯이 포함된 최상위 창을 가져오려면, 다음은 일반적인 사용 예입니다: import tkinter as tk class App(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() # create the application myapp = App() # # here are method calls to the window manager class # myapp.master.title("My Do-Nothing Application") myapp.master.maxsize(1000, 400) # start the program myapp.mainloop() Tk 옵션 데이터형¶anchor유효한 값은 나침반의 눈금입니다: 8개의 내장된, 이름있는 비트맵이 있습니다: 정수 0이나 1 또는 문자열 인자를 취하지 않는 파이썬 함수입니다. 예를 들면: def print_it(): print("hi there") fred["command"] = print_itcolor 색상은 rgb.txt 파일에 있는 X 색상의 이름이나, RGB 값을 4비트:
화면 거리는 픽셀이나 절대 거리로 지정할 수 있습니다. 픽셀은 숫자로 절대 거리는 문자열로 지정되며, 끝에 붙는 문자는 단위를 나타냅니다:
Tk는 이것은 유효한 값은 문자열입니다: 이것은 스페이스로 구분된 네 개의 요소가 있는 문자열이며, 각
요소는 유효한 거리(위를 참조하세요)입니다. 예를 들어: 위젯의 테두리 스타일을 결정합니다. 유효한 값은 다음과 같습니다: 이것은 거의 항상 어떤 스크롤 막대 위젯의
바인딩과 이벤트¶위젯 명령의 bind 메서드를 사용하면 특정 이벤트를 감시하고 해당 이벤트 유형이 발생할 때 콜백 함수가 트리거 되도록 할 수 있습니다. bind 메서드의 형식은 다음과 같습니다: def bind(self, sequence, func, add=''): 여기에서: sequence는 대상 이벤트의 종류를 나타내는 문자열입니다. (자세한 내용은 bind 매뉴얼 페이지와 John Ousterhout의 책의 201쪽을 참조하십시오). func는 하나의 인자를 취하는 파이썬 함수로, 이벤트가 발생할 때 호출됩니다. 이벤트 인스턴스가 인자로 전달됩니다. (이런 식으로 설치되는 함수를 흔히 콜백(callbacks)이라고 합니다.) add는 선택적이고, 예를 들면: def turn_red(self, event): event.widget["activeforeground"] = "red" self.button.bind("<Enter>", self.turn_red) 이벤트의 widget 필드가
index 매개 변수¶많은 위젯에는 “index” 매개 변수가 전달되어야 합니다. 이들은 Text 위젯의 특정 위치, Entry 위젯의 특정 문자 또는 Menu 위젯의 특정 메뉴 항목을 가리키는 데 사용됩니다. Entry 위젯 인덱스 (인덱스, 뷰 인덱스 등)Entry 위젯에는 표시되는 텍스트의 문자 위치를 참조하는 옵션이 있습니다. 다음
Text 위젯의 인덱스 표기법은 매우 풍부하며 Tk 매뉴얼 페이지에 자세히 설명되어 있습니다. 메뉴 인덱스 (menu.invoke(), menu.entryconfig() 등)메뉴에 대한 일부 옵션 및 메서드는 특정 메뉴 항목을 조작합니다. 옵션이나 매개 변수에 메뉴 인덱스가 필요한 때는 언제든지 다음과 같이 전달할 수 있습니다:
이미지¶서로 다른 형식의 이미지를
두 가지 유형의 이미지는 그런 다음 더 보기 Pillow 패키지는 BMP, JPEG, TIFF 및 WebP와 같은 형식을 위한 지원을 추가합니다. 파일 처리기¶Tk는 파일 기술자에서 I/O가 가능할 때 Tk 메인 루프에서 호출할 콜백 함수를 등록하고 등록 취소할 수 있도록 합니다. 파일 기술자당 하나의 처리기 만 등록 될 수 있습니다. 예제 코드: import tkinter widget = tkinter.Tk() mask = tkinter.READABLE | tkinter.WRITABLE widget.tk.createfilehandler(file, mask, callback) ... widget.tk.deletefilehandler(file) 윈도우에서는 이 기능을 사용할 수 없습니다. 얼마나 많은 바이트를 읽을 수 있는지 모르므로, Widget.tk. createfilehandler (file, mask, func)¶파일 처리기 콜백 함수
func를 등록합니다. file 인자는 Widget.tk. deletefilehandler (file)¶파일 처리기를 등록 취소합니다. tkinter. READABLE ¶
tkinter. WRITABLE ¶ tkinter. EXCEPTION ¶mask 인자에 사용되는 상수입니다. |