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所需的關鍵代碼。 –