【问题标题】:how to dynamic update QComboBox in PyQt5?如何在 PyQt5 中动态更新 QComboBox?
【发布时间】:2018-06-23 04:16:27
【问题描述】:

例如,第一个组合框带有选项 1 到 10 ,另一个组合框也是 1 到 10 ,当我在第一个中选择 2 时,我需要第二个组合框显示选项 3 到 10 ,我的意思是第二个组合框的值应该大于第一个。那么我应该如何在 PyQt5 中?

【问题讨论】:

    标签: python pyqt5 qcombobox


    【解决方案1】:

    你必须先在__init__方法中初始化组合框

    def __init__(self):
        #Write your __init__ body here
        self.comboBox1 = QComboBox()
        self.comboBox2 = QComboBox()
    

    然后就可以设置第一个combobox 1-10的item了

    for i in range(1,11):
        self.comboBox1.addItem(str(i))
    

    您可以使用currentTextChanged 信号来更新comboBox2

    self.comboBox1.currentTextChanged.connect(self.updateComboBox2)
    

    currentTextChanged 信号将新选择的文本值传递给方法

    所以updateComboBox2方法

    def updateComboBox2(self, newValue):
         ''' New Value is the changed value of comboBox1
             Do whatever you want to do with it here
             for eg. '''
         if newValue == 2:
             self.comboBox2.clear()        #This will remove all previous items
             for j in range(3,11):
                  self.comboBox2.addItem(str(j))
    

    【讨论】:

    • 为什么你认为提问者没有使用__init__
    • 我只是澄清了它应该在 init 中初始化,否则它将无法工作。我不认为提问者没有使用__init__
    • 您必须在完整写完答案后发布,因为您可能会认为您正在回复其他内容。您的初始答案与我为什么投反对票的问题没有直接关系,因为这是一个错误的答案,您当前的(完整)答案要好得多。
    • 是的,我使用制表符正确缩进,但错误地发布了。很抱歉。
    • 另一方面,在回答你的问题时,我建议在添加新元素之前调用 clear (),因为例如,如果在组合框中首先有从 1 到 5 的数字,然后首先选择火焰到4 然后在第二个组合框中将是 5,如果在第二个选择中您选择了带有答案的项目 2,您将在第二个组合框中获得项目 2、3、4、5 和 5,如您所见有重复的项目。
    猜你喜欢
    • 2022-01-21
    • 2021-10-04
    • 2017-02-04
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多