如何使tkinter窗口全屏在所有显示器上?



我正在编写一个程序,该程序需要在上全屏显示插入式显示器和/或外部显示器。在Tkinter中有什么方法可以做到这一点,或者我必须使用不同的库吗?到目前为止,我已经设法在我的主显示器上获得全屏窗口,但我也需要它在另一个(s)。这是我到目前为止的代码:

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)

相关内容

  • 没有找到相关文章

最新更新