gpt4 book ai didi

python - 当 QComboBox 设置为可编辑时

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:45 29 4
gpt4 key购买 nike

下面的代码创建了分配给相同布局的 QComboBox 和 QPushButton。组合框设置为可编辑,以便用户能够键入新的组合框项目的值。如果用户按 Tab 键盘键(而不是 Enter),则新值将不会添加到组合框。问题:即使用户使用 Tab 键离开组合框,如何确保组合框的项目更新为新值?

enter image description here

from PyQt4 import QtGui

def comboActivated(arg=None):
print '\n ...comboActivated: %s'%arg

widget = QtGui.QWidget()
layout = QtGui.QVBoxLayout()
widget.setLayout(layout)
combo = QtGui.QComboBox()
combo.setEditable(True)
combo.addItems(['One','Two','Three'])
combo.activated.connect(comboActivated)
layout.addWidget(combo)
layout.addWidget(QtGui.QPushButton('Push'))
widget.show()

最佳答案

当用户编辑框中的文本时,会发出 editTextChanged() 信号,并将编辑后的文本作为其参数。此外,当小部件本身失去焦点时,例如当用户键入 Tab 移动到按钮时,小部件会发出 focusOutEvent() 信号。该信号的参数是 QFocusEvent,您可以查询该事件以了解焦点丢失的原因。例如,如果用户点击 Tab 按钮离开小部件,则事件的 reason() 方法将返回 Qt.TabFocusReason

您可以将插槽连接到这些信号中的一个(或两个),以便当用户在编辑文本后离开小部件时,您可以对其进行处理并将其添加到框的值列表中。

您可能还想研究 QValidator 类及其子类,您可以将它们附加到具有可编辑文本的小部件,并定义小部件的有效输入类型(例如整数、文本、 ETC。)。这是验证用户对可编辑小部件的输入的最佳且最简单的方法。

关于python - 当 QComboBox 设置为可编辑时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235687/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com