1

QLineEdit に問題があります。コードで keyPressEvent を有効にすると、QLineEdit に何も入力できなくなります。

class SearchBox(gui.QLineEdit):
    def __init__(self, parent=None):
        super(SearchBox, self).__init__(parent)

        self.setWindowTitle("Explorer")
        self.setGeometry(500,500,400,40)
        font = gui.QFont()
        font.setPointSize(15)
        self.setFont(font)

    # if i disable this function then it works..
    def keyPressEvent(self, event):
        if event.key() == core.Qt.Key_Escape:
            self.close()
        if event.key() == core.Qt.Key_Enter:
            print self.text()
            self.close()

誰かがこれで私を助けてくれませんか..ありがとう。

4

1 に答える 1

2

基本クラスの を呼び出さない場合、keyPressEventキーが押されたことをどのように知るのでしょうか?

def keyPressEvent(self, event):
    if event.key() == core.Qt.Key_Escape:
        self.close()
    if event.key() == core.Qt.Key_Enter:
        print self.text()
        self.close()
    else:
        super(SearchBox, self).keyPressEvent(event)

これはドキュメントにも記載されています:

このハンドラーを再実装する場合、キーを操作しない場合は基本クラスの実装を呼び出すことが非常に重要です。

于 2013-06-07T11:08:49.070 に答える