【问题标题】:QComboBox returns None Type . How to get Current Data?QComboBox 返回无类型。如何获取当前数据?
【发布时间】:2011-05-27 21:44:15
【问题描述】:

我已经实现了 2 个 QComboBoxes,其中一个每次都手动插入项目,另一个则通过列表插入项目(我正在使用 Python)

但是当我尝试获取 Combobox 的当前值时,它返回 None 。 我按照这个问题的规定进行: I referred this 我已经提供了我编写的代码。“命令”和“选项”是 QComboBoxes(请原谅我的风格不好)索引中是否有任何错误?

    self.command.insertItem(1,'Convert')
    self.command.insertItem(2,'Compose')
    self.command.insertItem(3,'Animate')


    self.option.insertItems(268,list)

和检索:
self.selected_com=self.command.itemData(self.command.currentIndex()) self.selected_opt=self.option.itemData(self.option.currentIndex())

【问题讨论】:

    标签: python indexing pyqt qcombobox


    【解决方案1】:

    您尚未在组合框中选择当前项目。如果没有当前项目并插入带有insertItem 的新项目,则不会自动将其选为当前项目。你可能想打电话给self.command.setCurrentIndex(1)self.option.setCurrentIndex(1)

    来自关于currentIndex()的文档:

    默认情况下,对于空组合框或 没有当前项目的组合框 已设置,此属性的值为 -1.

    来自关于itemData()的文档:

    返回给定角色的数据 组合框中的给定索引,或 QVariant::Invalid 如果没有数据 对于这个角色。

    来自 PyQt 的文档:

    任何时候都可以使用任何 Python 对象 预计会有一个 QVariant。不会有 解释为无效的 QVariant。

    【讨论】:

    • 谢谢你 Rosh,我想你已经为我做了一些研究。但是当我按照你说的那样运行时,它显示“QComboBox 没有名为 setCurrentItem() 的属性”。有没有其他方法可以获取 ComboBox 的数据?
    • 我拼错了 setCurrentIndex。
    • 不,你说得对。但我也试过 setCurrentIndex 。无论我设置索引,它都返回 None !!!
    • 您还没有为 Qt.UserRole 角色设置任何数据(即您的 insertItem 调用中没有第三个参数),因此数据为 None。
    • 谢谢你。正如您所说,我已对其进行了修改:self.selected_com=self.command.itemData(self.command.currentIndex(),2) 并且有效。我仍然不知道 wat 是用户角色。哈:)
    【解决方案2】:

    您可以使用此代码从组合框获取当前数据:

    QString qualification=ui->comboBox->currentText();
    QDebug()<<qualification;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 2011-08-29
      • 2015-05-27
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 2015-11-11
      相关资源
      最近更新 更多