Получить значение из первого Combobox и изменить значение второго Combobox - PullRequest
0 голосов
/ 19 сентября 2019

Здесь у меня есть два комбинированных списка, первый - Homepage_List, второй - Board_List.

Я хочу, чтобы, когда я выбираю один из Homepage_List, соответствующий список bd появлялся в Board_List.


import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import uic,QtGui,QtCore

class Main_App(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = uic.loadUi("mainwindow_for_parser.ui", self)

        self.ui.show()
        self.Select_HP()
        self.Select_BD()

    def get_combobox(self, index):
        if index == 1:
            cb_bd_list.addItem(" ")
            cb_bd_list.addItem("correct")
            cb_bd_list.addItem("board")
            cb_bd_list.addItem("list")
        elif index == 2:
            cb_bd_list.addItem(" ")
            cb_bd_list.addItem("correct2")
            cb_bd_list.addItem("board2")
            cb_bd_list.addItem("list2")

    def Select_HP(self):
        cb_hp_list = self.ui.Homepage_List
        cb_hp_list.addItem(" ")
        cb_hp_list.addItem("HP address 1",1)
        cb_hp_list.addItem("HP address 2",2)
        cb_hp_list.addItem("HP address 3",3)


    def Select_BD(self):
        cb_bd_list = self.ui.Board_List
        current_hp = self.ui.Homepage_List.activated.connect(self.get_combobox)

когда я запустил этот код, я получил cb_bd_list - недопустимая ошибка.

1 Ответ

0 голосов
/ 20 сентября 2019

Ну, жаль, что вы не предоставили минимально воспроизводимый пример, тогда я мог бы показать, что вы, возможно, делали неправильно, но вот минималистичная рабочая версия того, что, я думаю, вы пытались выполнить.

from sys import exit as sysExit

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QComboBox, QHBoxLayout, QLabel

class CentralPanel(QWidget):
    def __init__(self, parent):
        QWidget.__init__(self)
        self.Parent = parent

        self.cbxHPList = QComboBox()
        self.cbxHPList.currentIndexChanged.connect(self.ChangeBDList)
        self.cbxBDList = QComboBox()

        HBox = QHBoxLayout()
        HBox.addWidget(self.cbxHPList)
        HBox.addWidget(QLabel('   '))
        HBox.addWidget(self.cbxBDList)
        HBox.addStretch(1)

        self.setLayout(HBox)

    def ChangeBDList(self, Index):
        self.Parent.UpdateBDList(Index)

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setWindowTitle('TestIt')
        self.resize(100,100)

        self.HPList = {0:' ', 1:'HP Address 1', 2:'HP Address 2', 3:'HP Address 3'}
        self.BDList1 = [' ', 'First',  'Board1', 'List1']
        self.BDList2 = [' ', 'Second', 'Board2', 'List2']
        self.BDList3 = [' ', 'Third',  'Board2', 'List3']

        self.CenterPane = CentralPanel(self)
        self.setCentralWidget(self.CenterPane)

        self.SetHome()

    def SetHome(self):
        self.CenterPane.cbxHPList.clear()
        for key in self.HPList.keys():
            self.CenterPane.cbxHPList.insertItem(key, self.HPList[key])

    def UpdateBDList(self, Index):
        ListUsed = []
        if Index == 1:
            ListUsed = self.BDList1
        elif Index == 2:
            ListUsed = self.BDList2
        elif  Index == 3:
            ListUsed = self.BDList3

        self.CenterPane.cbxBDList.clear()
        if len(ListUsed) > 0:
            Indx = 0
            for Item in ListUsed:
                self.CenterPane.cbxBDList.addItem(Item)
                Indx += 1

if __name__ == '__main__':
    MainThred = QApplication([])

    MainGUI = MainWindow()
    MainGUI.show()

    sysExit(MainThred.exec_())
...