pyQT Phonon播放器如何全屏?
我在想怎么把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
的方法,意思是你可以用它来检查当前是不是全屏模式。但它没有enterFullScreen
和exitFullScreen
这两个方法,这两个方法是视频小部件
类特有的。
不过,视频播放器
类有一个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()