PyQt5:如何使用特定的COMBO框选项来显示小部件容器?

时间:2018-05-02 12:15:06

标签: python python-3.x combobox pyqt5

嗨,有谁能告诉我这件事吗?我是PyQt的新手。

例如我在组合框中有3个选项A,B和C,如果我选择A,它应该显示一个小组,可能会调用X.如果我选择B,它应该显示另一组小部件说Y等等上。

此外,我已使用GROUP框对要在各个容器中显示的所有小部件进行分组。具体来说,我只想将Combobox的 A 选项与组合框相关联。

谢谢你:)

这是我的代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
def setupUi(self, MainWindow):



    MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(220, 40, 281, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("-")
        self.comboBox.addItem("A")
        self.comboBox.addItem("B")
        self.comboBox.addItem("C")

        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(70, 90, 631, 321))
        self.groupBox.setObjectName("groupBox")

        **#######################################################**   
        self.groupBox.hide()
        **#######################################################**

        self.pushButton_1 = QtWidgets.QPushButton(self.groupBox)
        self.pushButton_1.setGeometry(QtCore.QRect(120, 40, 391, 101))
        self.pushButton_1.setObjectName("pushButton_1")

        self.label_1 = QtWidgets.QLabel(self.groupBox)
        self.label_1.setGeometry(QtCore.QRect(280, 220, 150, 61))
        self.label_1.setStyleSheet("font: 14pt \"MS Shell Dlg 2\";")
        self.label_1.setObjectName("label_1")


        **#######################################################**
        cur_txt = self.comboBox.currentText()

        if  cur_txt == 'A':
            self.groupBox.show()
        else:
            self.groupBox.hide()
        **#######################################################**

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.groupBox.setTitle(_translate("MainWindow", "Yupp"))
        self.pushButton_1.setText(_translate("MainWindow", "Press Me1"))
        self.label_1.setText(_translate("MainWindow", "Hello Moto1"))
        self.pushButton_2.setText(_translate("MainWindow", "Press Me2"))
        self.label_2.setText(_translate("MainWindow", "Hello Moto2"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

部分的大部分是使用Qt设计器生成的。我强加的是之间的事情。我知道有些事情是错的,但我不知道如何纠正它们。

1 个答案:

答案 0 :(得分:0)

我从以下链接得到了答案: PYQT Qcombobox set value selected to a variable

非常有用。

只需在代码中添加以下行。通过创建一个单独的方法(temp_var),代码看起来很整洁。

self.comboBox.activated[str].connect(self.temp_var)

def temp_var(self, text):
    cur_txt = text
    if  cur_txt == 'A':
        self.groupBox.show()

    else:
        self.groupBox.hide()