【问题标题】:How do you get the current text contents of a QComboBox?如何获取 QComboBox 的当前文本内容?
【发布时间】:2011-08-29 01:07:42
【问题描述】:

使用 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)

【问题讨论】:

    标签: python pyqt pyqt4 python-2.6 qcombobox


    【解决方案1】:

    您可以使用str 将 QString 类型转换为 python 字符串 功能。假设您没有使用任何 Unicode 字符,您可以获得 python 字符串如下:

    text = str(combobox1.currentText())
    

    如果你使用任何 unicode 字符,你可以这样做:

    text = unicode(combobox1.currentText())
    

    【讨论】:

    • 太完美了!这正是我需要做的。我现在正在考虑更改组合框中的选定项目,而无需单击它。我试过 .setItemText("text choice") 但这给了我以下错误: TypeError: QComboBox.setItemText(int, QString): argument 1 has unexpected type 'str' 我不知道它期待什么类型,或者即使这是最好的方法。我只需要将所选项目更改为列表中的选项之一。
    • setItemText 的第一个参数是 QComboBox 中要更改其值的项目的索引。查看 Qt 文档doc.qt.nokia.com/4.7-snapshot/qcombobox.html#setItemText。您需要参考 API 文档来编写以熟悉可用的方法、它们的签名等。
    【解决方案2】:

    PyQt4 可以强制使用新的 API,其中 QString 会自动与 Python 对象相互转换:

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

    使用此 API,QtCore.QString 类不再可用,self.ui.comboBox.currentText() 将返回 Python 字符串或 unicode 对象。

    请参阅文档中的Selecting Incompatible APIs

    【讨论】:

      【解决方案3】:

      当item改变时获取ComboBox的Text

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

      【讨论】:

        【解决方案4】:

        如果您想要 QString 对象的文本值,您可以使用 __str__ 属性,如下所示:

        >>> a = QtCore.QString("Happy Happy, Joy Joy!")
        >>> a
        PyQt4.QtCore.QString(u'Happy Happy, Joy Joy!')
        >>> a.__str__()
        u'Happy Happy, Joy Joy!'
        

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-12
          • 1970-01-01
          • 2015-05-27
          • 2014-12-11
          • 1970-01-01
          • 2020-10-17
          • 1970-01-01
          • 2011-05-27
          相关资源
          最近更新 更多