簡體   English   中英

如何在所有顯示器上制作 tkinter 窗口全屏?

[英]How to make a tkinter window Fullscreen on all Displays?

我正在開發一個程序,該程序的窗口需要在所有插入式監視器和/或外部顯示器上全屏顯示。 有什么辦法可以在 Tkinter 中做到這一點,還是必須使用不同的庫? 到目前為止,我已經設法在我的主顯示器上獲得全屏窗口,但我在其他顯示器上也需要它。 到目前為止,這是我的代碼:

def create_screencanvas():
    global master_screen
    master_screen = Toplevel(mywindow)
    picture_frame = Frame(master_screen, background = "blue")
    picture_frame.pack(fill=BOTH, expand=YES)

    global screenCanvas
    screenCanvas = Canvas(picture_frame, cursor="cross", bg="grey5")
    screenCanvas.pack(fill=BOTH, expand=YES)

    master_screen.attributes('-fullscreen', True)#Fullscreen on main display but not others
    master_screen.attributes('-alpha', .3)
    master_screen.lift()
    master_screen.attributes("-topmost", True)

mywindow = Tk()
mywindow.title("New Project") 
mywindow.geometry("780x640") 
mywindow.minsize(540, 420) 
mywindow.configure(bg="blue") 

mybtn = Button(text="activate", command=create_screencanvas, cursor="cross")
mybtn.pack() #Button opens the fullscrean window

mywindow.mainloop()

出於截屏的目的,您可以通過手動更改其幾何形狀而不是使其全屏來使您的Toplevel窗口覆蓋所有顯示。 所以,刪除

master_screen.attributes('-fullscreen', True)

並將其替換為

w = master_screen.winfo_screenwidth()
h = master_screen.winfo_screenheight()
master_screen.geometry(f"{w}x{h}+0+0")

但是,您的窗口現在有不需要的裝飾。 根據您使用的操作系統,您可以使用

master_screen.overrideredirect(True)

或者,如果您使用的是 Linux(在這種情況下, overrideredirect可能不允許您具有窗口透明度),

master_screen.attributes('-type', 'dock')

在這兩種情況下,您不再需要

master_screen.attributes("-topmost", True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM