Pyqt Phonon Player to FullScreen?
-
27-10-2019 - |
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?
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()