Tkinter Object-Oriented Window

2024. 3. 13. 18:59GUI/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