我正在编写一个程序,该程序需要在上全屏显示插入式显示器和/或外部显示器。在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)