1

我有以下代码无法捕获关键事件。我使用 uic.loadUi() 来加载我的 GUI。但我似乎无法捕捉到键盘事件。

请帮忙!

class cMyApp(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self)

        self.ui = uic.loadUi("myApp.ui")
        #~ self.ui.show()   # Show myApp UI but key event Doesn't Work :(
        self.show()         # Show a small window but key event works.

    def keyPressEvent(self, event):
        if type(event)==QtGui.QKeyEvent:
            print ("type(event) = ",type(event))
            if event.key()==QtCore.Qt.Key_Escape:
                print("Esc pressed!!!")
                self.close()
            event.accept()
        else:
            event.ignore()

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    myApp = cMyApp()
    sys.exit(app.exec_())
4

1 回答 1

2

发现问题了!;P

使用 uic.loadUI() 加载时,必须提供 'self' 作为 baseinstance 的另一个参数;否则默认为无。

更正后的代码部分应为:

    self.ui = uic.loadUi("myApp.ui", self)  # Must supply 'self' as baseinstance.
    self.ui.show()   # Show myApp UI can work with key event now! :)
于 2013-06-10T08:51:17.273 回答