如何在 PyQt5 中保持全屏?

How to leave fullscreen in PyQt5?

我希望能够通过按 F11 在普通模式和全屏模式之间切换。如果我使用 F11 或使用菜单栏进入全屏,它工作正常。但我希望能够再次按 F11 离开全屏模式。这是我尝试过的:

    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)

如果您提供的代码在小部件的 __init__ 中,则 if 语句完全没有用,因为它只会被处理一次。

你需要的是连接到一个函数,它根据当前 window状态实际切换状态,当它被实际触发时:

        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()