यह इस जवाब देने के लिए एक सवाल अनुवर्ती है में दबाया जाता है: https://stackoverflow.com/a/11939294/406686:पाइप सभी कुंजीपटल एक एम्बेडेड MPlayer उदाहरण के लिए स्वचालित रूप से आदेश जब संशोधक कुंजी PyQt4
निम्नलिखित कोड है, जो एक QWidget
में एम प्लेयर को एम्बेड करता है पर विचार करें। समस्या यह है कि यह किसी भी mplayer कीबोर्ड शॉर्टकट्स पर प्रतिक्रिया नहीं करता है जैसे आगे की तलाश के लिए दायां तीर और इसी तरह।
यह स्पष्ट है कि मैं मैन्युअल रूप से प्रत्येक शॉर्टकट को फिर से कार्यान्वित कर सकता हूं। हालांकि एक संशोधक कुंजी के रूप में जब तक एक संशोधक कुंजी के रूप में, सभी कीबोर्ड अनुक्रमों को स्वचालित रूप से mplayer पर पाइप करने का कोई तरीका है, तो ALT या Win-Key दबाया जाता है?
उदाहरण के लिए: प्रेस एएलटी + → = आगे करें ...
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", कुंजी) से पहले कुछ प्रिंट करता हूं, तो कुछ भी नहीं होता है, इसलिए ऐसा लगता है कि elif भाग कभी निष्पादित नहीं किया जाता है ... – student
आम तौर पर इसे "Alt" -Key दबाकर और फिर दूसरी कुंजी दबाकर काम करना चाहिए। मुझे अभी एहसास हुआ कि तीर कुंजी के साथ एक सामान्य समस्या है। एक कामकाज के रूप में, मैंने init-method में self.setFocus() जोड़ा, तो सभी keyPressEvents सक्रिय हो जाते हैं। –
मुझे अभी पता चला है, कि event.nativeVirtualKey() mplayer के लिए सही कुंजी भेज सकता है, दुर्भाग्यवश यह तीर कुंजियों के लिए काम नहीं करता है। शायद, उन्हें mplayer द्वारा आवश्यक कुंजी कोड में मैन्युअल रूप से रूपांतरित करने की आवश्यकता है। –