【问题标题】:PyQt4 editable combobox current textPyQt4 可编辑组合框当前文本
【发布时间】: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


【解决方案1】:

我设法用这种方式做你想做的事

def __init__(self):
    ...
    self.ui.comboBox.currentIndexChanged.connect(self.run_initial_query) 

def run_initial_query(self):
    #Do stuff
    print self.ui.comboBox.currentText()

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
相关资源
最近更新 更多