如何在PyQt5中离开全屏?

2024-06-26 00:09:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想能够通过按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)

Tags: lambdaselfviewconnect模式filemenu全屏
1条回答
网友
1楼 · 发布于 2024-06-26 00:09:42

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

您需要连接到一个函数,该函数在实际触发时根据当前窗口状态切换状态:

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

相关问题 更多 >