pyQT声子播放器到全屏?

时间:2012-02-17 08:57:24

标签: python pyqt fullscreen phonon

我想知道如何将声子播放器设置为全屏? 我正在尝试这个代码。

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

但我继续收到此错误消息

  

TypeError:'sip.methoddescriptor'对象不可调用

上面的代码来自示例项目。原始代码是

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

我在PyQT中重新创建它,对我来说似乎很难。 任何人都可以指导我失踪的东西(预感一下) 或者我做错了什么?

2 个答案:

答案 0 :(得分:2)

VideoPlayerVideoWidget不同。

VideoPlayerQWidget的子类,因此拥有isFullScreen方法 - 但不会方法enterFullScreenexitFullScreen,属于VideoWidget类。

但是,VideoPlayer类有一个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()

答案 1 :(得分:0)

我认为问题在于您使用self.ui.videoPlayer.isFullScreen,它可能会返回True或False,当您使用self.ui.videoPlayer.isFullScreen()时,它实际上已经解析为'False()'。

奇怪的是,PyQT documentation甚至没有列出'isFullScreen'作为可用的方法/属性的一部分。但是QWidget documentation确实将isFullScreen显示为返回布尔值。

相反,试试这个:

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