2015-06-27 122 views
0

我有一个现有的PyQt代码:添加keyPressEvent到PyQt的

class MainWindow(QMainWindow, WindowMixin): 

    def __init__(self, filename=None): 
     super(MainWindow, self).__init__() 
     self.setWindowTitle(__appname__) 
    ... 
    def resizeEvent(self, event): 
    def queueEvent(self, event): 

我加了keyPressEvent:

def keyPressEvent(self, event): 
    print "pressed" 

事实证明,它只能接受当一些小部件我输入文本中的事件QMainWindow的。当图片具有焦点时,它不会生成按键事件。我该如何解决这个问题?

enter image description here

+0

文档中提到了一些关于调用setFocusPolicy()来接受对窗口小部件的焦点并开始在窗口小部件上接收keyPress的信息。 – Marco

回答

0

也许你SubWidget的(画面部件)也在等待着keyPressEvent,它不会传播到父?

class ParentWidget(...): 
    def keyPressEvent(self, event): 
     print "pressed" 

class ChildWidget(...): 
    def keyPressEvent(self, event): 
     if event.key() == QtCore.Qt.Key_<Some_key>: 
      ... 
     # Even if the pressed key is not <Some_key>, ParentWidget won't receive this event; 
     # for sending an event to the parent you must reject it: 
     else: 
      event.ignore()