pyQT Phonon播放器如何全屏?

1 投票
2 回答
2140 浏览
提问于 2025-04-17 13:10

我在想怎么把phonon播放器设置为全屏?我试了以下代码。

    if not self.ui.videoPlayer.isFullScreen():
        self.ui.videoPlayer.enterFullScreen()
    else: 
        self.ui.videoPlayer.exitFullScreen()

但是我一直收到这个错误信息

类型错误:'sip.methoddescriptor'对象不可调用

上面的代码来自一个示例项目,原始代码是

def full(self):
    if not self.videoWidget.isFullScreen():
        self.videoWidget.enterFullScreen()
    else: 
        self.videoWidget.exitFullScreen()

我在用PyQT重新创建这个项目,但对我来说似乎很难。有没有人能指导我一下我缺少了什么(我有这种感觉)或者我做错了什么?

2 个回答

0

我觉得问题出在你使用的 self.ui.videoPlayer.isFullScreen 上,它可能只会返回真或假,也就是 True 或 False。而当你用 self.ui.videoPlayer.isFullScreen() 时,实际上它会变成 'False()'。

有趣的是,PyQT 的 文档 里甚至没有把 'isFullScreen' 列为可用的方法或属性。不过,QWidget 的文档 确实显示 'isFullScreen' 是返回一个布尔值的。

试试这个:

if not self.ui.videoPlayer.isFullScreen:
    self.ui.videoPlayer.enterFullScreen()
else: 
    self.ui.videoPlayer.exitFullScreen()
2

视频播放器视频小部件是两回事。

视频播放器QWidget的一个子类,所以它会有一个isFullScreen的方法,意思是你可以用它来检查当前是不是全屏模式。但它没有enterFullScreenexitFullScreen这两个方法,这两个方法是视频小部件类特有的。

不过,视频播放器类有一个videoWidget的方法,这个方法可以返回它使用的视频小部件的实例。所以你的代码示例可能需要改成:

videoWidget = self.ui.videoPlayer.videoWidget()
if videoWidget.isFullScreen():
    videoWidget.exitFullScreen()
else: 
    videoWidget.enterFullScreen()

编辑

如果你想提供一个退出全屏模式的方法,可以设置一个键盘快捷键:

class MainWindow(QtGui.QMainWindow):
    def __init__(self)
        ...
        self.shortcutFull = QtGui.QShortcut(self)
        self.shortcutFull.setKey(QtGui.QKeySequence('F11'))
        self.shortcutFull.setContext(QtCore.Qt.ApplicationShortcut)
        self.shortcutFull.activated.connect(self.handleFullScreen)

    def handleFullScreen(self):
        videoWidget = self.ui.videoPlayer.videoWidget()
        if videoWidget.isFullScreen():
            videoWidget.exitFullScreen()
        else: 
            videoWidget.enterFullScreen()

撰写回答