Ho riscontrato un problema durante la creazione di un'applicazione Python 3 tkinter. Attualmente sto sviluppando utilizzando un sistema Mac OSX, ma normalmente utilizzo un sistema operativo Windows.Applicazione a schermo intero Python 3 Tkinter Borderless
Vorrei che l'applicazione occupasse l'intero schermo senza che la barra del titolo di Window Manager e la cornice fossero intorno all'applicazione, spesso riferita a una finestra senza bordi a pieno schermo nei giochi.
Ho provato a utilizzare root.attributes("-fullscreen", True)
con root.overrideredirect(True)
e root.wm_attributes("-topmost", 1)
. Tuttavia l'inclusione della linea root.overrideredirect(True)
non gli consente di andare a schermo intero corretto; mostra ancora il Dock del Mac e la barra delle applicazioni, e interrompe anche i miei collegamenti alla tastiera nell'applicazione. Senza la riga root.overrideredirect(True)
, l'applicazione passa alla modalità a schermo intero (nascondendo il dock e la barra delle attività), ma la finestra non riempie l'intero schermo; lascia una fessura nella parte inferiore e mantiene anche la barra del titolo e il bordo/il bordo del gestore finestre.
Ecco un esempio del mio codice:
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()
spero che qualcuno è in grado di aiutare! Grazie!
MODIFICA: L'ho appena provato sul mio computer Windows. Senza lo self.parent.overrideredirect(True)
, crea l'app e funziona perfettamente come desiderato (schermo intero senza il bordo di Window Manager o la barra del titolo). Questo deve essere solo un problema di OSX.
Hai provato a cambiare la geometria della radice e aggiungere un extra 5 o qualcosa alla larghezza e/o all'altezza? – Elxafil
Ho, purtroppo non ha funzionato. Grazie comunque per il suggerimento. :) – jacobian
Selezionare una risposta o un commento sulla risposta che non ha soddisfatto la correzione richiesta. –