这是我的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,则窗口将关闭。哪里出问题了?

编辑:

基本上,我有一个带有lineedit和按钮的窗口。我想通过单击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之外,其他任何一个都无法正常工作

最佳答案

您要查找的方法称为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)


原来这是一个多么混乱的答案:)

关于python - QtCore.Qt.Key_似乎不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13399598/

10-10 21:25