【问题标题】:QcomboBox using "ENTER" eventQcomboBox 使用“ENTER”事件
【发布时间】:2018-12-13 19:16:28
【问题描述】:

在此用户从下拉菜单中选择项目时,使用“搜索”按钮进行搜索。我想添加“ENTER”,但作为此事件的快捷方式。请参考图片,这样会更清楚。

【问题讨论】:

  • 更好地解释自己,图像没有帮助,你希望它在用户按下回车时发生。
  • 当我使用返回按下时,它会抛出这个错误“AttributeError:'QComboBox'对象没有属性'returnPressed'
  • 正是@eyllanesc。希望它在用户从键盘按“Enter”时发生。
  • 没错,QComboBox没有returnPressed的信号。请提供minimal reproducible example
  • 您希望当焦点在 QComboBox 上并按下回车键时,它会发出一个信号。我是对的?

标签: python python-2.7 pyqt pyqt4 qcombobox


【解决方案1】:

一个简单的解决方案是使用QShortcut,如下所示:

from PyQt4 import QtGui, QtCore

class Widget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        lay = QtGui.QHBoxLayout(self)
        combo = QtGui.QComboBox()
        combo.addItems(["option1", "option2", "option3"])
        lay.addWidget(combo)
        lay.addWidget(QtGui.QPushButton("Press Me"))

        shortcut = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return), combo, activated=self.onActivated)

    def onActivated(self):
        print("enter pressed")

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

【讨论】:

  • 这也会在 QComboBox 没有焦点时触发,这在带有许多其他小部件的更大 UI 中可能不需要。
  • @Jeronimo 如果你想建立一个关于快捷方式范围的策略,你必须建立属性context
  • 啊,我明白了。因此,如果您将上下文设置为Qt::WidgetWithChildrenShortcut,它应该会按预期运行。
  • @Jeronimo 应该是,最好的方法是尝试。 Qt 提供了不同类型的 QShorcut 范围,因为有范围本地和其他全局范围的快捷方式。这就是使用像 Qt 这样成熟的库的优势。
猜你喜欢
  • 2016-06-26
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2015-11-16
  • 1970-01-01
相关资源
最近更新 更多