2
我試圖捕獲key_tab事件,但沒有運氣。我意識到只有在沒有其他小部件的情況下才能使用,所以遊標沒有去哪裏纔可以讓事件返回。這裏是一個簡化的代碼示例。如何捕獲Key_tab事件
class MyCombo(QComboBox):
def __init__(self, parent=None):
super(MyCombo, self).__init__(parent)
self.setEditable(True)
def keyPressEvent(self, event):
if (event.type() == QEvent.KeyPress) and (event.key() == Qt.Key_Tab):
print "tab pressed"
elif event.key() == Qt.Key_Return:
print "return pressed"
else:
QComboBox.keyPressEvent(self, event)
class Form_1(QDialog):
def __init__(self, parent=None):
super(Form_1, self).__init__(parent)
self.combo = MyCombo()
self.line = QLineEdit()
layout = QVBoxLayout()
layout.addWidget(self.combo)
layout.addWidget(self.line)
self.setLayout(layout)
app = QApplication(sys.argv)
form = Form_1()
form.show()
app.exec_()
如果我註釋掉以下兩行
self.line = QLineEdit()
layout.addWidget(self.line)
然後正常工作,因爲只剩下一個窗體上的小部件。
我在哪裏出錯?
乾杯,喬
這個問題是特定於Key_tab,還是會影響其他鍵? – amccormack 2013-04-04 05:16:00
我沒有嘗試庫中的每個鍵,但正如我在上面的示例代碼中,我嘗試了可以正常工作的key_return。 – JoeMicro 2013-04-04 15:40:11
我想弄清楚這個問題是否特定於key_tab或者其他鍵是否受到影響。 – amccormack 2013-04-04 16:41:35