Pregunta

Me preguntaba cómo configurar un reproductor de fonones en la pantalla completa. Estoy intentando estos códigos.

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

Pero sigo recibiendo este mensaje de error

TypeError: 'sip.methoddescriptor' El objeto no es llamable

El código anterior funciona de un proyecto de muestra. El código original era

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

Lo estoy recreando en Pyqt y me parece difícil. ¿Alguien puede guiarme sobre lo que me estoy perdiendo (tengo un presentimiento al respecto) o lo que estoy haciendo mal?

¿Fue útil?

Solución

A Reproductor de video no es lo mismo que un Videowidget.

VideoPlayer es una subclase de QWidget, por lo que voluntad tienen una isFullScreen método, pero no tener los métodos enterFullScreen y exitFullScreen, que pertenecen al VideoWidget clase.

sin embargo, el VideoPlayer la clase tiene un videowidget Método que devuelve la instancia del widget de video que utiliza, por lo que su ejemplo de código probablemente debería cambiarse a:

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

EDITAR

Para proporcionar un método para salir del modo de pantalla completa, configure un atajo de teclado:

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

Otros consejos

Creo que el problema es tu uso de self.ui.videoPlayer.isFullScreen, probablemente regrese verdadero o falso, que cuando usa self.ui.videoPlayer.isFullScreen() realmente se está resolviendo a 'false ()'.

Curiosamente, el pyqt documentación Ni siquiera enumera 'isfullscreen' como parte de los métodos/propiedades disponibles. Sin embargo, el Documentación de QWidget muestra a IsfullScreen como devolver un booleano.

En su lugar, prueba esto:

if not self.ui.videoPlayer.isFullScreen:
    self.ui.videoPlayer.enterFullScreen()
else: 
    self.ui.videoPlayer.exitFullScreen()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top