【发布时间】:2016-01-27 09:15:28
【问题描述】:
这里是我的代码,我为 QLineEdit 生成事件以将按下的组合键放在文本行中,对于 Shift 键和 Alt 键可以,但对于 Ctrl 键不行,为什么?
#!/usr/bin/python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
self.la = QLabel("Press tab in this box:")
self.le = MyLineEdit()
layout = QVBoxLayout()
layout.addWidget(self.la)
layout.addWidget(self.le)
self.setLayout(layout)
self.connect(self.le, SIGNAL("press"),
self.update)
def update(self):
oldText = str(self.le.text())
self.le.setText(self.le.myText)
class MyLineEdit(QLineEdit):
def __init__(self, *args):
QLineEdit.__init__(self, *args)
self.myText = ""
def event(self, event):
if event.type() == QEvent.KeyPress:
if event.modifiers() & Qt.ControlModifier :
在文本行中,Shift 键和 Alt 键可以,我可以将变量 self.myText 值放在文本行中,但对于 Ctrl 键不行,为什么?
print event.text()
self.myText = "Ctrl+"+ event.text()
self.emit(SIGNAL("press"))
return True
return QLineEdit.event(self, event)
if __name__ == "__main__":
main()
【问题讨论】:
标签: python-2.7 pyqt4