Tkinter Object-Oriented Window
2024. 3. 13. 18:59ㆍGUI/tkinter
요약 : 이 튜토리얼에서는 Tkinter에서 객체 지향 프로그래밍을 적용하여 코드를 보다 체계적으로 만드는 방법을 배웁니다.
Tkinter 객체 지향 창 정의
다음의 간단한 프로그램은 루트 창을 생성 하고 이를 화면에 표시합니다.
In [1]:
import tkinter as tk
root = tk.Tk()
root.mainloop()
프로그램이 더욱 복잡해지면 객체 지향 프로그래밍 접근 방식을 사용하여 코드를 보다 체계적으로 만들 수 있습니다.
다음 프로그램은 위의 프로그램과 동일한 결과를 얻지만 대신 class를 사용합니다.
In [2]:
import tkinter as tk
class App(tk.Tk):
def __init__(self):
super().__init__()
if __name__ == "__main__":
app = App()
app.mainloop()
동작 방식.
먼저 App 클래스에서 상속되는 tk.Tk 클래스를 정의합니다. __init__() 메서드 내에서 tk.Tk 클래스의 init() 메서드를 호출합니다. 둘째, App 클래스의 새 인스턴스를 만들고 mainloop() 메서드를 호출하여 루트 창을 표시합니다.
Tkinter의 객체 지향 창의 또 다른 예
다음 클래스는 레이블 과 버튼 으로 구성된 창을 나타냅니다 . 버튼을 클릭하면 프로그램이 메시지 상자를 표시합니다 .
In [3]:
import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo
class App(tk.Tk):
def __init__(self):
super().__init__()
# configure the root window
self.title('My Awesome App')
self.geometry('300x50')
# label
self.label = ttk.Label(self, text='Hello, Tkinter!')
self.label.pack()
# button
self.button = ttk.Button(self, text='Click Me')
self.button['command'] = self.button_clicked
self.button.pack()
def button_clicked(self):
showinfo(title='Information', message='Hello, Tkinter!')
if __name__ == "__main__":
app = App()
app.mainloop()
작동 방식.
- 먼저 App 클래스의 init() 메소드에 라벨과 버튼을 생성합니다 .
- 둘째, 버튼의 명령 옵션에 button_clicked() 메서드를 할당합니다. button_clicked() 메서드 내부에 메시지 상자를 표시합니다.
- 셋째, 애플리케이션 부트스트래핑을 if name = "main" 블록으로 이동합니다.
요약
- 객체 지향 프로그래밍 접근 방식을 사용하여 코드를 보다 체계적으로 만듭니다.
- tk.Tk 클래스에서 상속되는 클래스를 정의합니다. 항상 하위 클래스의 상위 클래스에서 super().init()을 호출하십시오.
'GUI > tkinter' 카테고리의 다른 글
Developing a Full Tkinter Object-Oriented Application (0) | 2024.03.15 |
---|---|
Tkinter Object-Oriented Frames (0) | 2024.03.14 |
Tkinter Cursors (0) | 2024.03.12 |
Tkinter Canvas (0) | 2024.03.11 |
Tkinter Treeview (0) | 2024.03.10 |