【问题标题】:pyQT phonon player to fullscreen?pyQT声子播放器全屏?
【发布时间】:2012-02-20 12:41:04
【问题描述】:

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

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

【问题讨论】:

  • 这可能没有帮助,但如果您使用 Wing IDE 或 Pycharm,您可以使用调试器和交互式控制台轻松调试并查看确切的行和问题以及导致它的对象。通常为我隐含地解决这类问题

标签: python pyqt fullscreen phonon


【解决方案1】:

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

【讨论】:

  • 这很棒。它绝对有效!谢谢埃库莫罗。只是一个后续问题。我设法在全屏模式下做到了。关于如何退出它有什么提示吗?因为它在全屏。我无法按下激活全屏模式的按钮...再次感谢!
  • @Katherina。有关退出全屏模式的方法,请参阅我的更新答案。
  • 非常感谢您提供给我的详细示例。
【解决方案2】:

我认为问题在于您使用 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()

【讨论】:

  • 嗨,我试过你给定的答案..我收到一个错误“” self.ui.videoPlayer.exitFullScreen() TypeError: 'sip.methoddescriptor' object is not callable。我仍在尝试修复此合成器面板
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多