У меня возникла проблема при создании приложения tkinter Python 3. В настоящее время я разрабатываю систему Mac OSX, но обычно использую систему ОС Windows.
Я хотел бы, чтобы приложение занимало весь экран без заголовка Window Manager и рамки вокруг приложения, часто упоминаемого в полноэкранном окне без полей в играх.
Я попытался использовать root.attributes("-fullscreen", True)
с root.overrideredirect(True)
и root.wm_attributes("-topmost", 1)
. Однако включение строки root.overrideredirect(True)
не позволяет ему работать в полноэкранном режиме; он все еще показывает Mac Dock и панель задач, а также нарушает привязки клавиш в приложении. Без строки root.overrideredirect(True)
приложение переходит в полноэкранный режим (скрывая док-станцию и панель задач), но окно не заполняет весь экран; он оставляет пробел внизу, а также сохраняет строку заголовка окна и рамки/рамки.
Вот пример моего кода:
import tkinter as tk
class App(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Fullscreen Application")
self.pack(fill="both", expand=True, side="top")
self.parent.wm_state("zoomed")
self.parent.bind("<F11>", self.fullscreen_toggle)
self.parent.bind("<Escape>", self.fullscreen_cancel)
self.fullscreen_toggle()
self.label = tk.Label(self, text="Fullscreen", font=("default",120), fg="black")
self.label.pack(side="top", fill="both", expand=True)
def fullscreen_toggle(self, event="none"):
self.parent.focus_set()
self.parent.overrideredirect(True)
self.parent.attributes("-fullscreen", True)
self.parent.wm_attributes("-topmost", 1)
def fullscreen_cancel(self, event="none"):
self.parent.overrideredirect(False)
self.parent.attributes("-fullscreen", False)
self.parent.wm_attributes("-topmost", 0)
self.centerWindow()
def centerWindow(self):
sw = self.parent.winfo_screenwidth()
sh = self.parent.winfo_screenheight()
w = sw*0.7
h = sh*0.7
x = (sw-w)/2
y = (sh-h)/2
self.parent.geometry("%dx%d+%d+%d" % (w, h, x, y))
if __name__ == "__main__":
root = tk.Tk()
App(root).pack(side="top", fill="both", expand=True)
root.mainloop()
Я надеюсь, что кто-то сможет помочь! Спасибо!
EDIT: Я только что протестировал это на своем компьютере под управлением Windows. Без self.parent.overrideredirect(True)
он создает приложение и отлично работает по своему желанию (полноэкранный режим без рамки оконного менеджера или панели заголовка). Это просто проблема OSX.