【问题标题】:Combobox Python PyQt5 [duplicate]组合框 Python PyQt5 [重复]
【发布时间】:2021-02-23 11:54:09
【问题描述】:

我有以下代码:

#创建组合框

combo = QComboBox(self)
combo.addItem("Apple")
combo.addItem("Amazon")
combo.activated.connect(self.comboChoice)
navbar.addWidget(combo)

此组合框将在列表中列出“Apple”和“Amazon”。

我想要有两列。第一列是公司名称,第二列是网站。第二列应隐藏。当我单击公司名称时,该操作应该会弹出一条带有公司网站的消息。例如:

苹果 | www.apple.com (hidden) > 点击苹果,弹出的信息会显示“www.apple.com”。

提前感谢您的所有意见。

【问题讨论】:

    标签: python python-3.x combobox pyqt5 multiple-columns


    【解决方案1】:

    显然,您可以使用一个简单的值列表并根据激活的组合框索引调用它们。

    尽管如此,QComboBox 提供了更动态的解决方案,并且您不需要“第二列”,因为您可以在添加单个项目时使用自定义 user data

        self.combo = QComboBox(self)
        self.combo.addItem("Apple", "www.apple.com")
        self.combo.addItem("Amazon", "www.amazon.com")
        self.combo.activated.connect(self.comboChoice)
    
    def comboChoice(self, index):
        print(self.combo.itemData(index))
    

    【讨论】:

    • 我收到 ``` NameError: name 'combo' is not defined ```
    • @MahaPappan 这完全取决于您的代码:请注意,我已将组合设置为实例属性(self.combo = ,与您的 combo = 相对,因此您应该以相同的方式访问组合我是这样做的。请检查您的代码并尝试了解发生了什么。另外,对类、实例及其属性进行一些研究,这是您不能忽视的 Python(以及一般编程)的基本知识。
    • 我搞定了。是的,父(类)和子(实例)关系很有意义。感谢您的分享,非常感谢。
    • 不客气,请记住,如果某个答案解决了您的问题,您应该通过单击其左侧的灰色复选标记将其标记为已接受。
    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2020-01-28
    • 2023-01-03
    • 2020-03-22
    相关资源
    最近更新 更多