PyQt双用途ENTER按键

时间:2018-02-25 21:29:54

标签: python pyqt pyqt5 enter qcombobox

我正在使用PyQt5和Python 3.6。我想将<link href="https://openlayers.org/en/v4.6.4/css/ol.css" rel="stylesheet"/> <script src="https://openlayers.org/en/v4.6.4/build/ol-debug.js"></script> <div id="map" class="map"></div> <a id="export-png" class="btn" download="map.png">&nbsp;</a>(或ENTER)密钥用于双重目的。

如果用户在组合框中输入文本然后点击RETURN键,那么我希望将组合框中的文本附加到列表中。在所有其他情况下,我希望ENTER键用作按钮的快捷方式。

我无法找到按下ENTER时句柄的正确决定。这是一个代码示例。我正在寻找ENTER函数中的决定(在脚本的底部)。

returnDecision(self)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使用QComboBox的自定义子类并覆盖keyPressEvent方法。然后还在窗口小部件中实现keyPressEvent,并以不同的方式处理每个事件。

class CustomCombo(QtWidgets.QComboBox):

    enter_pressed = QtCore.pyqtSignal()

    def __init__(self, parent=None):
        super().__init__(parent)

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Return:
            self.enter_pressed.emit()
        else:
            QtWidgets.QComboBox.keyPressEvent(self, event)  
            # if the key is not return, handle normally


class Example(QWidget):

    def __init__(self):
        # Code here
        self.combo_box = CustomCombo(self)
        self.combo_box.enter_pressed.connect(self.cboxAction)

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Return:
            self.btnAction()