Frage

Ich habe mich gefragt, wie man einen Phonon -Player auf den Vollbildmodus setzt. Ich versuche diese Codes.

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

Aber ich erhalte diese Fehlermeldung immer wieder

TypeError: 'SIP.Methoddescriptor' Objekt ist nicht aufrufbar

Der obige Code funktioniert aus einem Beispielprojekt. Der ursprüngliche Code war

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

Ich erzeugte es in Pyqt und es scheint mir schwer zu sein. Kann mich jemand bitte dazu führen, was mir fehlt (eine Ahnung davon) oder was ich falsch mache?

War es hilfreich?

Lösung

EIN Videoplayer ist nicht dasselbe wie a Videowidget.

VideoPlayer ist eine Unterklasse von QWidget, so dass es Wille einen haben isFullScreen Methode - aber es Gewohnheit haben die Methoden enterFullScreen und exitFullScreen, was zum der gehören VideoWidget Klasse.

Allerdings die VideoPlayer Klasse hat a Videowidget Methode, die die Instanz des von es verwendeten Video -Widgets zurückgibt, sodass Ihr Code -Beispiel wahrscheinlich geändert werden sollte:

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

BEARBEITEN

Um eine Methode zum Verlassen des Vollbildmodus zu erhalten, richten Sie eine Tastaturverknüpfung ein:

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

Andere Tipps

Ich denke, das Problem ist Ihre Verwendung von self.ui.videoPlayer.isFullScreen, Es kehrt wahrscheinlich wahr oder falsch zurück, was bei Verwendung self.ui.videoPlayer.isFullScreen() Entschlossen sich wirklich auf 'false ()'.

Seltsamerweise der Pyqt Dokumentation Listet nicht einmal 'isFiLlscreen' als Teil der verfügbaren Methoden/Eigenschaften auf. Jedoch das Qwidget -Dokumentation Zeigt IsfiLlscreen als Rückgabe eines Booleschen.

Versuchen Sie stattdessen das:

if not self.ui.videoPlayer.isFullScreen:
    self.ui.videoPlayer.enterFullScreen()
else: 
    self.ui.videoPlayer.exitFullScreen()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top