[파이썬] tkinter 애플리케이션에서의 화면 전환

tkinter는 Python에서 사용되는 표준 GUI (Graphical User Interface) 라이브러리입니다. 이 라이브러리를 사용하여 애플리케이션을 개발하면서, 여러 화면 사이를 전환해야하는 경우가 있을 수 있습니다. 이 블로그 포스트에서는 tkinter 애플리케이션에서의 화면 전환을 구현하는 방법을 알아보겠습니다.

화면 전환을 위한 기본 개념

tkinter에서 화면 전환을 구현하는 방법은 여러가지가 존재하지만, 가장 일반적으로 사용되는 방법은 다음과 같습니다:

  1. Frame을 사용하여 각 화면을 나타냅니다.
  2. 화면 전환을 위해 필요한 컨트롤 버튼들을 생성합니다.
  3. 각 버튼에 이벤트 핸들러를 할당하여 원하는 화면으로 전환되도록 합니다.

이제 위의 개념을 코드로 구현해보겠습니다.

예제 코드

import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        
        self.title("화면 전환 예제")
        self.geometry("400x300")
        
        self.frames = {}
        
        # 각 화면(Frame)을 생성합니다.
        self.frame1 = Frame1(self)
        self.frames[Frame1] = self.frame1
        self.frame1.place(x=0, y=0, relwidth=1, relheight=1)
        
        self.frame2 = Frame2(self)
        self.frames[Frame2] = self.frame2
        self.frame2.place(x=0, y=0, relwidth=1, relheight=1)
        
        self.frame3 = Frame3(self)
        self.frames[Frame3] = self.frame3
        self.frame3.place(x=0, y=0, relwidth=1, relheight=1)
        
        # 컨트롤 버튼을 생성합니다.
        self.button1 = tk.Button(self, text="화면 1로 이동", command=lambda: self.show_frame(Frame1))
        self.button1.place(x=50, y=250)
        
        self.button2 = tk.Button(self, text="화면 2로 이동", command=lambda: self.show_frame(Frame2))
        self.button2.place(x=150, y=250)
        
        self.button3 = tk.Button(self, text="화면 3로 이동", command=lambda: self.show_frame(Frame3))
        self.button3.place(x=250, y=250)
        
        # 초기 화면 설정
        self.show_frame(Frame1)
        
    def show_frame(self, frame):
        # 선택한 화면을 보여줍니다.
        frame_to_show = self.frames[frame]
        frame_to_show.tkraise()

class Frame1(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        
        label = tk.Label(self, text="이곳은 화면 1 입니다.")
        label.pack(pady=50)
        
class Frame2(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        
        label = tk.Label(self, text="이곳은 화면 2 입니다.")
        label.pack(pady=50)

class Frame3(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        
        label = tk.Label(self, text="이곳은 화면 3 입니다.")
        label.pack(pady=50)

# 애플리케이션 실행
app = App()
app.mainloop()

위의 예제 코드는 tkinter를 사용하여 화면 전환 기능을 구현하는 방법을 보여줍니다. 코드를 실행하면 화면 1에서 시작하며, 버튼을 클릭하여 다른 화면으로 전환할 수 있습니다.

각각의 화면은 tk.Frame을 상속받는 클래스로 구현되며, place 메서드를 사용하여 화면을 배치합니다. 버튼에는 각 화면을 전환하는 이벤트 핸들러가 할당되어 있습니다.

화면 전환은 tkraise 메서드를 사용하여 선택한 화면을 보여주는 방식으로 구현되었습니다.

이 예제 코드를 참고하여, 자신의 애플리케이션에 맞게 화면 전환 기능을 구현해보세요!