Domanda

Mi chiedevo come impostare un giocatore di Phonon sullo schermo intero? Sto provando questi codici.

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

Ma continuo a ricevere questo messaggio di errore

TypeEerror: l'oggetto 'sip.methoddescriptor' non è richiamabile

Il codice sopra funziona proviene da un progetto di esempio. Il codice originale era

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

Lo sto ricreando in Pyqt e mi sembra difficile. Qualcuno può guidarmi su ciò che mi manca (avere un sospetto al riguardo) o cosa sto facendo di sbagliato?

È stato utile?

Soluzione

UN Lettore video non è la stessa cosa di un Videowidget.

VideoPlayer è una sottoclasse di QWidget, così volere abbi un isFullScreen Metodo - ma esso non avere i metodi enterFullScreen e exitFullScreen, che appartengono al VideoWidget classe.

in ogni caso, il VideoPlayer la classe ha a Videowidget Metodo che restituisce l'istanza del widget video che utilizza, quindi l'esempio del codice dovrebbe essere probabilmente modificato in:

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

MODIFICARE

Per fornire un metodo per uscire dalla modalità a schermo intero, impostare una scorciatoia da tastiera:

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

Altri suggerimenti

Penso che il problema sia il tuo uso di self.ui.videoPlayer.isFullScreen, probabilmente sta tornando vero o falso, che quando usi self.ui.videoPlayer.isFullScreen() si sta davvero risolvendo fino a "false ()".

Stranamente, il pyqt documentazione non elenca nemmeno "isfullscreen" come parte dei metodi/proprietà disponibili. In ogni caso, il Documentazione Qwidget Mostra di schermo come restituire un booleano.

Invece, prova questo:

if not self.ui.videoPlayer.isFullScreen:
    self.ui.videoPlayer.enterFullScreen()
else: 
    self.ui.videoPlayer.exitFullScreen()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top