如果 keyPressEvent 开启,则无法输入 QlineEdit [英] Can't type in QlineEdit if the keyPressEvent is on

查看:90
本文介绍了如果 keyPressEvent 开启,则无法输入 QlineEdit的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用 QLineEdit 时遇到问题,如果我在代码中启用了 keyPressEvent,那么我将无法在 QLineEdit 中输入任何内容.

class SearchBox(gui.QLineEdit):def __init__(self, parent=None):super(SearchBox, self).__init__(parent)self.setWindowTitle("资源管理器")self.setGeometry(500,500,400,40)字体 = gui.QFont()font.setPointSize(15)self.setFont(字体)# 如果我禁用了这个功能,那么它就可以工作了..def keyPressEvent(self, event):如果 event.key() == core.Qt.Key_Escape:self.close()如果 event.key() == core.Qt.Key_Enter:打印 self.text()self.close()

有人可以帮我解决这个问题吗..谢谢.

解决方案

如果不调用基类的keyPressEvent,它怎么知道某个键被按下了?

>

def keyPressEvent(self, event):如果 event.key() == core.Qt.Key_Escape:self.close()如果 event.key() == core.Qt.Key_Enter:打印 self.text()self.close()别的:超级(搜索框,自我).keyPressEvent(事件)

文档中也提到了这一点:

<块引用>

如果你重新实现这个处理程序,调用如果您不对密钥采取行动,则为基类实现.

I am having a problem with the QLineEdit, if i enable the keyPressEvent in the code then i am not able to type anything in the 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()

can someone please help me with this.. thanks.

解决方案

If you don't call the keyPressEvent of the base class how is it supposed to know that some key was pressed?

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)

This is also mentioned in the documentation:

If you reimplement this handler, it is very important that you call the base class implementation if you do not act upon the key.

这篇关于如果 keyPressEvent 开启,则无法输入 QlineEdit的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆