Dies ist eine Frage zu dieser Antwort folgen ist: https://stackoverflow.com/a/11939294/406686:Rohr alle Tastatur automatisch zu einem eingebetteten Mplayer Beispiel Befehle, wenn eine Zusatztaste in PyQt4 gedrückt wird
Betrachten Sie den folgenden Code, der MPlayer in einem QWidget
einbettet. Das Problem ist, dass es auf keine mplayer-Tastaturkürzel wie den rechten Pfeil zum Suchen usw. reagiert.
Es ist klar, dass ich jede Verknüpfung manuell neu implementieren kann. Aber gibt es eine Möglichkeit, alle Tastatursequenzen automatisch an mplayer zu übertragen, solange eine Modifikatortaste gedrückt wird, zB ALT oder Win-Key?
Zum Beispiel: Drücken Sie ALT + → = vorwärts suchen ...
import mpylayer
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.container = QtGui.QWidget(self)
self.container.setStyleSheet('background: black')
self.button = QtGui.QPushButton('Open', self)
self.button.clicked.connect(self.handleButton)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.container)
layout.addWidget(self.button)
self.mplayer = mpylayer.MPlayerControl(
'mplayer', ['-wid', str(self.container.winId())])
def handleButton(self):
path = QtGui.QFileDialog.getOpenFileName()
if not path.isEmpty():
self.mplayer.loadfile(unicode(path))
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.resize(640, 480)
window.show()
sys.exit(app.exec_())
Danke, aber es funktioniert nicht ohne Fehlermeldungen. Wenn ich etwas vor der Zeile 'self .__ modifier_pressed = True 'drucke, wird es ausgedruckt, wenn die Modifikatortaste gedrückt wird, aber wenn ich etwas vor' self.mplayer.run_command (" key_down_event ", key) drucke, passiert nichts es scheint, dass der elif part niemals ausgeführt wird ... – student
Im Allgemeinen sollte es funktionieren, wenn man die "Alt" -Taste gedrückt hält und dann eine andere Taste drückt. Ich habe gerade festgestellt, dass es ein generelles Problem mit den Pfeiltasten gibt. Als Workaround habe ich der init-Methode self.setFocus() hinzugefügt, dann werden alle keyPressEvents aktiviert. –
Ich habe gerade herausgefunden, dass event.nativeVirtualKey() den richtigen Schlüssel an mplayer senden kann, leider funktioniert das nicht für Pfeiltasten. Wahrscheinlich müssen sie manuell in den von mplayer benötigten Schlüsselcode konvertiert werden. –