【问题标题】:Change QComboBox items with QCheckBox from different class使用来自不同类的 QCheckBox 更改 QComboBox 项目
【发布时间】:2018-10-20 18:21:47
【问题描述】:

我试图弄清楚如何从另一个类更改 QComboBox 中的项目。我已经尝试了几种方法,包括尝试填充其他类的项目。在下面的示例中,我将具有 QCheckBox 的类 Widget1 嵌入到 MainWindow 中,并在检查但不工作时尝试更改列表项。它将打印连接但没有其他内容。有人可以解释我做错了什么吗?谢谢。

import sys
from PyQt5.QtWidgets import QWidget, QComboBox, QHBoxLayout, QApplication, QVBoxLayout, QCheckBox

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.widget1 = Widget1
        self.hbox = QHBoxLayout()
        self.Combo_Box = QComboBox()
        self.hbox.addWidget(self.Combo_Box)
        self.hbox.addWidget(self.widget1())
        self.setLayout(self.hbox)
        self.list = ['1','2','3','4','5','6']
        self.Combo_Box.addItems(self.list)

    def change_ComboBox(self):
        print("connected")
        self.Combo_Box.clear()
        self.list2 = ['7', '8', '9', '10', '11', '12']
        self.Combo_Box.addItems(self.list2)

class Widget1(QWidget):
    def __init__(self):
        super(Widget1, self).__init__()
        self.vbox = QVBoxLayout()
        self.check_Box = QCheckBox(self)
        self.vbox.addWidget(self.check_Box)
        self.check_Box.clicked.connect(self.send_change_ComboBox)

    def send_change_ComboBox(self):
        self.mainwindow = MainWindow()
        if self.check_Box.isChecked():
            self.mainwindow.change_ComboBox()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    wnd = MainWindow()
    wnd.show()
    app.exec_()

【问题讨论】:

    标签: pyqt qcombobox qcheckbox


    【解决方案1】:

    试试看:

    import sys
    from PyQt5.QtWidgets import QWidget, QComboBox, QHBoxLayout, QApplication, QVBoxLayout, QCheckBox
    
    class MainWindow(QWidget):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.widget1   = Widget1(self)            
            self.hbox      = QHBoxLayout()
            self.Combo_Box = QComboBox()
            self.hbox.addWidget(self.Combo_Box)
            self.hbox.addWidget(self.widget1)     
            self.setLayout(self.hbox)
            self.initUi()
    
        def initUi(self): 
            self.Combo_Box.clear()    
            self.list = ['1','2','3','4','5','6']
            self.Combo_Box.addItems(self.list)
    
        def change_ComboBox(self):
            print("connected")
            self.Combo_Box.clear()
            self.list2 = ['7', '8', '9', '10', '11', '12']
            self.Combo_Box.addItems(self.list2)
    
    class Widget1(QWidget):
        def __init__(self, parent=None):
            super(Widget1, self).__init__(parent)
            self.parent = parent
    
            self.vbox      = QVBoxLayout()
            self.check_Box = QCheckBox(self)
            self.vbox.addWidget(self.check_Box)
            self.check_Box.clicked.connect(self.send_change_ComboBox)
    
        def send_change_ComboBox(self):
            if self.check_Box.isChecked():
                self.parent.change_ComboBox()
            else:
                self.parent.initUi()
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        wnd = MainWindow()
        wnd.show()
        app.exec_()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多