Можно ли изменить FigureCanvas с помощью Combobox в Python? - PullRequest
1 голос
/ 05 мая 2019

Как переключаться между уже созданными графиками в графическом интерфейсе, используя выпадающее меню выпадающего списка? Прямо сейчас мой графический интерфейс открывается, когда я нажимаю на поле со списком, ничего не происходит.

Я довольно новичок в программировании, поэтому мои знания довольно ограничены. Прошу прощения, если вопрос слишком расплывчатый.

class Untersuchung(QWidget):  
    def __init__(self): 
        QWidget.__init__(self)
        self.setWindowTitle("Projekt")

        layout = QGridLayout() 
        self.setLayout(layout)

        label1 = QLabel("Choose the Plot") 
        layout.addWidget(label1,0,0)

        self.figure1 = #PLOT1
        self.canvas1 = FigureCanvas(self.figure1)
        self.figure2 = #PLOT2
        self.canvas2 = FigureCanvas(self.figure2)


        self.combobox1 = QComboBox() 
        self.combobox1.addItem("Option1")
        self.combobox1.addItem("Option2")
        layout.addWidget(self.combobox1,1,0)        
        self.combobox1.activated.connect(self.dropdown)

Я не уверен, какой должна быть эта функция.

def dropdown(self):     
    if self.combobox1.currentText() == "Option1":
        self.setLayout(layout)
        layout.addWidget(self.canvas1,2,0)
    elif self.combobox1.currentText() == "Option2":
        self.setLayout(layout)
        layout.addWidget(self.canvas2,2,0)

Я хочу заменить отображаемый график в соответствии с выбранным параметром комбинированного списка. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 05 мая 2019

Если вы хотите поочередно отображать виджеты в одном и том же пространстве окна, лучше всего использовать QStackedWidget или QStackLayout, в следующем примере первый вариант:

class Untersuchung(QWidget):
    def __init__(self, parent=None):
        super(Untersuchung, self).__init__(parent)
        self.setWindowTitle("Projekt")

        layout = QGridLayout(self)
        label1 = QLabel("Choose the Plot")
        layout.addWidget(label1, 0, 0)

        self.figure1 = #PLOT1
        self.canvas1 = FigureCanvas(self.figure1)
        self.figure2 = #PLOT2
        self.canvas2 = FigureCanvas(self.figure2)

        self.combobox1 = QComboBox()
        stacked_widget = QStackedWidget()

        for text, canvas in zip(
            ("Option1", "Option2"), (self.canvas1, self.canvas2)
        ):
            self.combobox1.addItem(text)
            stacked_widget.addWidget(canvas)

        self.combobox1.currentIndexChanged[int].connect(
            stacked_widget.setCurrentIndex
        )
        layout.addWidget(self.combobox1, 1, 0)
        layout.addWidget(stacked_widget, 2, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...