嗨,有谁能告诉我这件事吗?我是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设计器生成的。我强加的是#之间的事情。我知道有些事情是错的,但我不知道如何纠正它们。
答案 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()