5
这是这个答案的后续问题被按下键盘的所有自动命令嵌入MPlayer的实例:https://stackoverflow.com/a/11939294/406686:管道时修改键PyQt4中
考虑下面的代码,其中嵌入的mplayer在QWidget
。问题在于它不会对任何mplayer键盘快捷键(例如向前查找的右箭头等)作出反应。
很明显,我可以手动重新实现每个快捷方式。但是有没有办法将所有的键盘序列自动传输到mplayer,只要按下ALT或Win-Key键等修饰键?
例如:按ALT +→=向前搜索...
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_())
谢谢,但它没有错误信息不起作用。如果我在“self .__ modifier_pressed = True”行之前打印某些内容,当按下修饰键时会打印出来,但如果我在'self.mplayer.run_command(“key_down_event”,key)之前打印了什么,似乎elif部分从来没有得到执行... – student
一般来说,它应该在按住“Alt”键然后按另一个键时工作。我刚刚意识到,箭头键存在一个普遍问题。作为一种解决方法,我将self.setFocus()添加到init方法中,然后激活所有keyPressEvents。 –
我刚刚发现,event.nativeVirtualKey()可能会将正确的键发送到mplayer,不幸的是这不适用于箭头键。可能他们需要手动转换为mplayer所需的关键代码。 –