1

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

    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 中重新创建它,这对我来说似乎很难。谁能指导我我错过了什么(有预感)或我做错了什么?

4

2 回答 2

2

VideoPlayer与VideoWidget不同

VideoPlayer是 的子类QWidget,因此它将一个isFullScreen方法 - 但它没有属于该类的方法enterFullScreenand 。exitFullScreenVideoWidget

但是,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()
于 2012-02-17T18:49:13.450 回答
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()
于 2012-02-17T09:06:46.670 回答