PyQt5将Enter键连接到Widget

时间:2016-04-20 17:50:09

标签: python qt pyqt

目前,我正在使用自己的自定义窗口小部件,其中包含QLineEditQPushButton。用户仅限于在文本字段中输入0到1000之间的整数。点击该按钮后,小工具的自定义clicked信号会在该字段中显示该值。

以下是代码:

class ResizeWidget(QWidget):

    clicked = pyqtSignal(int)

    def __init__(self):
        super().__init__()

        #NumField and Button
        self.field = QLineEdit()
        self.field.setPlaceholderText("Resize Percentage [0,1000]")
        self.resizeButton = QPushButton("Resize")

        #Layout
        self.lay = QHBoxLayout()
        self.setLayout(self.lay)

        #Add to Widget
        self.lay.addWidget(self.field)
        self.lay.addWidget(self.resizeButton)

        #Field limits
        self.field.setMaxLength(4)
        self.field.setValidator(QIntValidator(0,1000))

        #Connection
        self.resizeButton.clicked.connect(self.onClick)

    @pyqtSlot()
    def onClick(self):
        val = int(self.field.text())
        self.clicked.emit(val)

现在我想要添加到课程中的方法是允许用户在闪烁的光标|有时被称为“插入符号”时按下输入。在文本字段中。

我能够找到关于鼠标的文档,mouseEventmousePressEvent作为QWidgets中的方法。但我找不到任何引用文本字段中闪烁光标的文档。

我想在 init ()中添加这样的伪代码:

if(cursor == inQLineEdit and pressedEnter):
    self.onClick()

我知道QLineEdit::returnPressed在创建正确的函数中起主要作用,但我只希望在用户使用ResizeWidget时输入键有效。不是我的GUI的其他部分。我认为输入键在我的整个应用程序中只能绑定到1个小部件,但我有兴趣了解。

1 个答案:

答案 0 :(得分:2)

就像添加以下行一样简单:

self.field.returnPressed.connect(self.onClick)

只要插入符号(闪烁光标)不在文本字段中,按Enter键不会对我的自定义小部件产生任何反应。