I want to be able to toggle between normal mode and fullscreen by pressing F11. If I enter fullscreen with F11 or using the menubar it works fine. But I want to be able to press F11 again to leave the fullscreen mode. Here is what I tried:
self.setFullscreen = QtWidgets.QAction("&Fullscreen", self)
self.setFullscreen.setShortcut("F11")
self.setFullscreen.setStatusTip("Change to fullscreen mode")
if self.isFullScreen():
self.setFullscreen.triggered.connect(lambda _: self.showNormal())
else:
self.setFullscreen.triggered.connect(lambda _: self.showFullScreen())
# menubar
self.menu = QtWidgets.QMenuBar(self)
self.file_menu = self.menu.addMenu("&File")
self.file_menu.addAction(self.openFile)
self.file_menu.addAction(self.saveFile)
self.file_menu.addAction(self.exitApp)
self.view_menu = self.menu.addMenu("&View")
self.view_menu.addAction(self.setFullscreen)
If the code you provided is in the __init__
of the widget, the if
statement is completely useless, since it will be processed only once.
What you need is to connect to a function that actually toggles the state based on the current window state, when it is actually triggered:
self.setFullscreen = QtWidgets.QAction("&Fullscreen", self)
self.setFullscreen.setShortcut("F11")
self.setFullscreen.setStatusTip("Change to fullscreen mode")
self.setFullscreen.triggered.connect(self.toggleFullScreen)
# ...
def toggleFullScreen(self):
if self.isFullScreen():
self.showNormal()
else:
self.showFullScreen()