How to make a window fullscreen in a secondary display with tkinter? How to make a window fullscreen in a secondary display with tkinter? tkinter tkinter

How to make a window fullscreen in a secondary display with tkinter?


This works on Windows 7: If the second screen width and height are the same as the first one, you can use win1 or win2 geometry of the following code depending its relative position(leftof or rightof) to have a fullscreen in a secondary display:

from Tkinter import *def create_win():    def close(): win1.destroy();win2.destroy()    win1 = Toplevel()    win1.geometry('%dx%d%+d+%d'%(sw,sh,-sw,0))    Button(win1,text="Exit1",command=close).pack()    win2 = Toplevel()    win2.geometry('%dx%d%+d+%d'%(sw,sh,sw,0))    Button(win2,text="Exit2",command=close).pack()root=Tk()sw,sh = root.winfo_screenwidth(),root.winfo_screenheight()print "screen1:",sw,shw,h = 800,600 a,b = (sw-w)/2,(sh-h)/2 Button(root,text="Exit",command=lambda r=root:r.destroy()).pack()Button(root,text="Create win2",command=create_win).pack()root.geometry('%sx%s+%s+%s'%(w,h,a,b))root.mainloop()


Try:

from Tkinter import *rot = Tk()wth,hgh = rot.winfo_screenwidth(),rot.winfo_screenheight()#take desktop width and hight (pixel)_w,_h = 800,600 #root width and highta,b = (wth-_w)/2,(hgh-_h)/2 #Put root to center of display(Margin_left,Margin_top)def spann():    def _exit():        da.destroy()    da = Toplevel()    da.geometry('%dx%d+%d+%d' % (wth, hgh,0, 0))    Button(da,text="Exit",command=_exit).pack()    da.overrideredirect(1)    da.focus_set()#Restricted access main menuButton(rot,text="Exit",command=lambda rot=rot : rot.destroy()).pack()but = Button(rot,text="Show SUB",command=spann)but.pack()rot.geometry('%sx%s+%s+%s'%(_w,_h,a,b))rot.mainloop()""" Geometry pattern 'WxH+a+b'        W = Width        H = Height        a = Margin_left+Margin_Top"""


Windows, Python 3.8

In this solution, pressing F11 will make the window fullscreen on the current screen.

Note that self.root.state("zoomed") is Windows specific according to doc.

self.root.overrideredirect(True) is weird in Windows and may have unwanted side effects. For instance I've had issues related to changing screen configuration with this option active.

#!/usr/bin/env python3import tkinter as tkclass Gui:    fullScreen = False    def __init__(self):        self.root = tk.Tk()        self.root.bind("<F11>", self.toggleFullScreen)        self.root.bind("<Alt-Return>", self.toggleFullScreen)        self.root.bind("<Control-w>", self.quit)        self.root.mainloop()    def toggleFullScreen(self, event):        if self.fullScreen:            self.deactivateFullscreen()        else:            self.activateFullscreen()    def activateFullscreen(self):        self.fullScreen = True        # Store geometry for reset        self.geometry = self.root.geometry()        # Hides borders and make truly fullscreen        self.root.overrideredirect(True)        # Maximize window (Windows only). Optionally set screen geometry if you have it        self.root.state("zoomed")    def deactivateFullscreen(self):        self.fullScreen = False        self.root.state("normal")        self.root.geometry(self.geometry)        self.root.overrideredirect(False)    def quit(self, event=None):        print("quiting...", event)        self.root.quit()if __name__ == '__main__':    Gui()