【发布时间】:2015-09-02 18:35:01
【问题描述】:
我正在使用可编辑的 QComboBox。我想要实现的是能够在字段中输入查询并在按下回车后运行该查询。但无论我如何尝试获取键入的查询,组合框的值始终是列表中的第一项,而不是我刚刚键入的字符串。我尝试使用self.query_combo.lineEdit().text() 和self.query_combo.currentText() 获取文本,但无论如何我都无法获取该字段中的实际当前文本值。
有谁知道为什么会这样以及如何解决?
self.query_combo = QComboBox(query_box)
self.query_combo.setEditable(True)
query_box.layout().addWidget(self.query_combo)
# combo box is filled with some example items
然后用户继续输入输入文本。键入时,“开始查询”按钮会突出显示。因此,当用户按下回车键时(插入符号仍在编辑字段中),小部件将按下该按钮并开始查询。在查询方法中,代码如下:
def run_initial_query(self):
# Query keywords.
qkw = self.query_combo.currentText()
# or
qkw = self.query_combo.lineEdit().text()
但都不产生新输入的值。组合框始终选择已在列表中的第一个示例列表项。我感觉使用 QLineEdit 会减少问题,但不幸的是,这不是一个选项。
【问题讨论】:
-
请多贴一些代码,你是通过什么方式获取当前文本的?
-
添加了一些代码来帮助说明场景。
-
我假设 pushButton.pressed() 信号未正确连接到 self.run_initial_query ,因为您总是获得第一项的文本。 “开始查询” button.pressed() 信号以哪种方式连接到 self.run_initial_query()?
-
@DavidNovak。对我来说很好。问题一定都在你没有显示的代码中。这就是为什么在 SO 上提问时应该始终发布 mcve。
标签: python combobox pyqt4 qcombobox