Tkinter 에서 프레임을 전환하는 방법

Jinku Hu 2020년6월25일
Tkinter 에서 프레임을 전환하는 방법

버튼을 클릭하여 Tkinter GUI 의 다른 섹션으로 이동 한 다음이 새 섹션에서 버튼을 클릭 한 후 기본 섹션으로 돌아갈 수 있습니다.

Tkinter 의 프레임 전환

기존 프레임을 파괴하고 새 프레임으로 교체하여 프레임 전환

try:
    import Tkinter as tk
except:
    import tkinter as tk


class SampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self._frame = None
        self.switch_frame(StartPage)

    def switch_frame(self, frame_class):
        new_frame = frame_class(self)
        if self._frame is not None:
            self._frame.destroy()
        self._frame = new_frame
        self._frame.pack()


class StartPage(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        tk.Label(self, text="Start page", font=("Helvetica", 18, "bold")).pack(
            side="top", fill="x", pady=5
        )
        tk.Button(
            self, text="Go to page one", command=lambda: master.switch_frame(PageOne)
        ).pack()
        tk.Button(
            self, text="Go to page two", command=lambda: master.switch_frame(PageTwo)
        ).pack()


class PageOne(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        tk.Frame.configure(self, bg="blue")
        tk.Label(self, text="Page one", font=("Helvetica", 18, "bold")).pack(
            side="top", fill="x", pady=5
        )
        tk.Button(
            self,
            text="Go back to start page",
            command=lambda: master.switch_frame(StartPage),
        ).pack()


class PageTwo(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        tk.Frame.configure(self, bg="red")
        tk.Label(self, text="Page two", font=("Helvetica", 18, "bold")).pack(
            side="top", fill="x", pady=5
        )
        tk.Button(
            self,
            text="Go back to start page",
            command=lambda: master.switch_frame(StartPage),
        ).pack()


if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()

switch_frame(self, frame_class)메소드는 기존 프레임을 파괴 한 다음 새로운 프레임 frame_class로 대체합니다.

tk.Button(self, text="Go to page one", command=lambda: master.switch_frame(PageOne)).pack()인수를 전달 함PageOne 프레임을 버튼 명령 switch_frame 에 전달하십시오. 버튼을 클릭하면 swtich_frame 함수를 호출합니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook