Tkinter 에서 전체 화면 창을 만드는 방법

Jinku Hu 2023년1월30일
  1. Tkinter 에서 전체 화면 모드를 만드는 Windows root.attributes('-fullscreen', True)
  2. Tkinter 에서 전체 화면 모드를 만드는 우분투 root.attributes('-zoomed', True)
  3. 도구 모음이 표시된 전체 화면 모드 표시
Tkinter 에서 전체 화면 창을 만드는 방법

이 튜토리얼에서는 Tkinter 에서 전체 화면 창을 만드는 방법과 전체 화면 모드를 전환하거나 종료하는 방법을 소개합니다.

Tkinter 에서 전체 화면 모드를 만드는 Windows root.attributes('-fullscreen', True)

tk.Tk.attributes 는 플랫폼 고유의 속성을 설정합니다. Windows 의 속성은

  • -alpha
  • -transparentcolor
  • -disabled
  • -fullscreen
  • -toolwindow
  • -topmost

-fullscreen 은 윈도우가 전체 화면 모드인지 아닌지를 지정합니다.

import tkinter as tk


class Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.window.attributes("-fullscreen", True)
        self.fullScreenState = False
        self.window.bind("<F11>", self.toggleFullScreen)
        self.window.bind("<Escape>", self.quitFullScreen)

        self.window.mainloop()

    def toggleFullScreen(self, event):
        self.fullScreenState = not self.fullScreenState
        self.window.attributes("-fullscreen", self.fullScreenState)

    def quitFullScreen(self, event):
        self.fullScreenState = False
        self.window.attributes("-fullscreen", self.fullScreenState)


if __name__ == "__main__":
    app = Fullscreen_Example()
self.window.bind("<F11>", self.toggleFullScreen)

F11toggleFullScreen 함수에 바인딩됩니다.

def toggleFullScreen(self, event):
    self.fullScreenState = not self.fullScreenState
    self.window.attributes("-fullscreen", self.fullScreenState)

이 기능에서 ‘전체 화면’모드가 전환 된 상태로 업데이트됩니다.

def quitFullScreen(self, event):
    self.fullScreenState = False
    self.window.attributes("-fullscreen", self.fullScreenState)

quitFullScreen 기능은-fullscreenFalse 로 설정하여 전체 화면 모드를 종료합니다.

lambda함수를 사용하여 솔루션을 더 간단하게 만들 수 있습니다.

import tkinter as tk


class Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.window.attributes("-fullscreen", True)
        self.window.bind(
            "<F11>",
            lambda event: self.window.attributes(
                "-fullscreen", not self.window.attributes("-fullscreen")
            ),
        )
        self.window.bind(
            "<Escape>", lambda event: self.window.attributes("-fullscreen", False)
        )

        self.window.mainloop()


if __name__ == "__main__":
    app = Fullscreen_Example()
self.window.bind(
    "<F11>",
    lambda event: self.window.attributes(
        "-fullscreen", not self.window.attributes("-fullscreen")
    ),
)

lambda 함수를 F11 에 바인딩합니다. 여기서 현재 전체 화면 상태는 self.window.attributes("-fullscreen")에 의해 읽혀질 수 있으며, 메소드에 값이 없으면 상태를 반환합니다.

이 접근법을 따르면 상태 변수 fullScreenState가 더 이상 필요하지 않습니다.

Tkinter 에서 전체 화면 모드를 만드는 우분투 root.attributes('-zoomed', True)

-fullscreen 속성은 Windows 에만 존재하지만 Linux 나 macOS 에는 없습니다. 우분투에는 창을 전체 화면 모드로 설정하기위한 비슷한 속성 인 -zoomed가 있습니다.

import tkinter as tk


class Ubuntu_Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.window.attributes("-zoomed", True)
        self.fullScreenState = False
        self.window.bind("<F11>", self.toggleFullScreen)
        self.window.bind("<Escape>", self.quitFullScreen)

        self.window.mainloop()

    def toggleFullScreen(self, event):
        self.fullScreenState = not self.fullScreenState
        self.window.attributes("-zoomed", self.fullScreenState)

    def quitFullScreen(self, event):
        self.fullScreenState = False
        self.window.attributes("-zoomed", self.fullScreenState)


if __name__ == "__main__":
    app = Ubuntu_Fullscreen_Example()

도구 모음이 표시된 전체 화면 모드 표시

위 코드에 표시된 전체 화면 모드는 툴바를 보이지 않게합니다. 창에 도구 모음을 표시해야하는 경우 창의 지오메트리는 모니터 크기와 같아야합니다.

import tkinter as tk


class Fullscreen_Example:
    def __init__(self):
        self.window = tk.Tk()
        self.fullScreenState = False
        self.window.attributes("-fullscreen", self.fullScreenState)

        self.w, self.h = (
            self.window.winfo_screenwidth(),
            self.window.winfo_screenheight(),
        )
        self.window.geometry("%dx%d" % (self.w, self.h))

        self.window.bind("<F11>", self.toggleFullScreen)
        self.window.bind("<Escape>", self.quitFullScreen)

        self.window.mainloop()

    def toggleFullScreen(self, event):
        self.fullScreenState = not self.fullScreenState
        self.window.attributes("-fullscreen", self.fullScreenState)

    def quitFullScreen(self, event):
        self.fullScreenState = False
        self.window.attributes("-fullscreen", self.fullScreenState)


if __name__ == "__main__":
    app = Fullscreen_Example()
self.w, self.h = self.window.winfo_screenwidth(), self.window.winfo_screenheight()

winfo_screenwidth()winfo_screenheight()는 모니터의 너비와 높이를 가져옵니다.

self.window.geometry("%dx%d" % (self.w, self.h))

geometry 방법을 사용하여 GUI 창 크기를 모니터 너비 및 높이와 동일하게 설정합니다.

작가: 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

관련 문장 - Tkinter Geometry