如何获取QComboBox的当前文本内容?

46 投票
4 回答
173874 浏览
提问于 2025-04-16 17:58

我在用pyqt4和python 2.6,想用一个下拉框(qcombobox)来提供选项列表。但是我在使用选中的选项时遇到了问题。我已经能用信号来触发一个方法,当用户选择了某个选项时会执行这个方法,但问题是,当用户点击运行时,需要考虑到多个下拉框的内容。所以我基本上需要把下拉框中选中的内容作为字符串获取。目前为止,我只能用以下代码:

print combobox1.currentText()

得到这个结果:

PyQt4.QtCore.QString(u'Test Selection2')

但我其实只想要“测试选择”这一部分,有什么好主意吗? 我的下拉框是这样做的:

combobox1 = qt.QComboBox()
combobox1.addItems(['Test Selection1', 'Test Selection2'])
mainLayout.addWidget(combobox1, 0, 0)

4 个回答

4

在PyQt4中,可以强制使用一种新的接口,这种接口会自动把QString转换成Python对象,反之亦然:

import sip
sip.setapi('QString', 2)

使用这个新接口后,QtCore.QString这个类就不再可用了,self.ui.comboBox.currentText()会返回一个Python字符串或者unicode对象。

详细信息可以查看文档中的选择不兼容的API

4

当下拉框中的选项改变时,如何获取其文本内容

     self.ui.comboBox.activated.connect(self.pass_Net_Adap)

  def pass_Net_Adap(self):
      print str(self.ui.comboBox.currentText())
94

你可以通过使用 str 函数把 QString 类型转换成 Python 字符串。如果你没有使用任何 Unicode 字符,可以像下面这样得到一个 Python 字符串:

text = str(combobox1.currentText())

如果你使用了 Unicode 字符,可以这样做:

text = unicode(combobox1.currentText())

撰写回答