这是我的keyPressEvent
def keyPressEvent(self , e):
key = e.key()
if key == QtCore.Qt.Key_Escape:
self.close()
elif key == QtCore.Qt.Key_A:
print 'Im here'
但是,如果我点击A,则不会打印。然而,如果我点击Escape,窗口就会关闭。我哪里出错了?
编辑:
基本上我有一个带有线条和按钮的窗口。我想通过点击Enter将按钮链接到一个功能,让我们说好玩。这是我的代码
import sys
from PyQt4 import QtGui , QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example , self).__init__()
self.window()
def window(self):
self.setWindowTitle('Trial')
self.layout = QtGui.QGridLayout()
self.text = QtGui.QLineEdit()
self.first = QtGui.QPushButton('Button')
self.layout.addWidget(self.text , 0 , 0)
self.layout.addWidget(self.first , 1 , 0)
self.setLayout(self.layout)
self.first.clicked.connect(self.fun)
self.show()
def fun(self):
//do something
def keyPressEvent(self , e):
key = e.key()
if key == QtCore.Qt.Key_Escape:
self.close()
elif key == QtCore.Qt.Key_Enter:
self.fun()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我稍后会添加更多密钥。但除Escape之外没有其他人正在工作/
答案 0 :(得分:2)
您正在寻找的方法称为keyPressEvent
,而不是KeyPressEvent
。
您的QLineEdit
似乎正在窃取您的KeyPress
事件。如果您只想处理行编辑中的回车键,则可以将returnPressed
信号连接到self.fun
:
self.text.returnPressed.connect(self.fun) # in PySide
否则,您将不得不使用event filters。我稍后会尝试发布一些代码。
您的最终修改使其更加清晰。您可以安全地删除keyPressEvent
并使用:
self.text.returnPressed.connect(self.fun)
self.button.clicked.connect(self.fun)
这是一个多么糟糕的答案:)
答案 1 :(得分:0)
你正在制作GUI应用程序,对吗?如果是,那么这样的打印将在控制台中打印。试试这个......
QtGui.QMessageBox.information(self,"hello","I m here")