采用pyside6库布置一个MainWindow。MainWindow含有两个widget。第一个Widget共四行,第一行依次为textlabel1,,comboBox1;第二行依次为textlabel2,CheckBox1,CheckBox2;第三行依次为textlabel3,CheckBoxA,CheckBoxB;第四行为一个Pushbutton,点击Pushbutton后显示或隐藏第二个Widget。第二个Widget默认隐藏,第二个Widget包含三个TableWidget,每个tablewidget都是两列,第一列均为CheckBox,TableWidget1中的CheckBox与CheckBox1和CheckBox2对应,对应关系如下:CheckBox1对应TableWidget1中第一列的CheckBox11,12,CheckBox2对应TableWidget1中的CheckBox21,22,根据CheckBox1和CheckBox2的勾选情况在table中第一列动态显示对应的CheckBox;第二列设置为comboBox,每个comboBox有两个选项;TableWidget2中的CheckBo与CheckBoxA和CheckBoxB对应,对应关系如下:CheckBoxA对应TableWidget2中的CheckBoxA1,A2,CheckBoxB对应TableWidget2中的CheckBoxB1,B2,根据CheckBoxA和CheckBoxB的勾选情况在table中第一列动态显示CheckBox;第二列设置为comboBox,每个comboBox有两个选项;TableWidget3第一列为CheckBox:31,32;第二列设置为comboBox,每个comboBox有两个选项。三个TableWidget下方设置一个Pushbutton,点击Pushbutton后依次print所有CheckBox和comboBox的值。
时间: 2024-01-24 16:03:56 浏览: 184
下面是一个示例代码,实现了你描述的功能:
```python
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QCheckBox, \
QComboBox, QPushButton, QTableWidget, QTableWidgetItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建第一个Widget
self.widget1 = QWidget(self)
self.setCentralWidget(self.widget1)
self.widget1_layout = QVBoxLayout(self.widget1)
# 第一行
self.row1_layout = QHBoxLayout()
self.widget1_layout.addLayout(self.row1_layout)
self.textlabel1 = QLabel("TextLabel1")
self.comboBox1 = QComboBox()
self.comboBox1.addItems(["Item1", "Item2"])
self.row1_layout.addWidget(self.textlabel1)
self.row1_layout.addWidget(self.comboBox1)
# 第二行
self.row2_layout = QHBoxLayout()
self.widget1_layout.addLayout(self.row2_layout)
self.textlabel2 = QLabel("TextLabel2")
self.checkBox1 = QCheckBox("CheckBox1")
self.checkBox2 = QCheckBox("CheckBox2")
self.row2_layout.addWidget(self.textlabel2)
self.row2_layout.addWidget(self.checkBox1)
self.row2_layout.addWidget(self.checkBox2)
# 第三行
self.row3_layout = QHBoxLayout()
self.widget1_layout.addLayout(self.row3_layout)
self.textlabel3 = QLabel("TextLabel3")
self.checkBoxA = QCheckBox("CheckBoxA")
self.checkBoxB = QCheckBox("CheckBoxB")
self.row3_layout.addWidget(self.textlabel3)
self.row3_layout.addWidget(self.checkBoxA)
self.row3_layout.addWidget(self.checkBoxB)
# 第四行
self.row4_layout = QHBoxLayout()
self.widget1_layout.addLayout(self.row4_layout)
self.pushButton = QPushButton("Show/Hide Widget2")
self.row4_layout.addWidget(self.pushButton)
self.pushButton.clicked.connect(self.show_hide_widget2)
# 创建第二个Widget
self.widget2 = QWidget(self)
self.widget2_layout = QVBoxLayout(self.widget2)
# TableWidget1
self.tablewidget1 = QTableWidget(2, 2)
self.tablewidget1.setItem(0, 0, QTableWidgetItem("CheckBox11"))
self.tablewidget1.setItem(1, 0, QTableWidgetItem("CheckBox12"))
self.tablewidget1.setColumnWidth(0, 100)
self.combobox1 = QComboBox()
self.combobox1.addItems(["Option1", "Option2"])
self.tablewidget1.setCellWidget(0, 1, self.combobox1)
self.tablewidget1.setCellWidget(1, 1, QComboBox())
self.widget2_layout.addWidget(self.tablewidget1)
# TableWidget2
self.tablewidget2 = QTableWidget(2, 2)
self.tablewidget2.setItem(0, 0, QTableWidgetItem("CheckBoxA1"))
self.tablewidget2.setItem(1, 0, QTableWidgetItem("CheckBoxA2"))
self.tablewidget2.setColumnWidth(0, 100)
self.combobox2 = QComboBox()
self.combobox2.addItems(["Option1", "Option2"])
self.tablewidget2.setCellWidget(0, 1, self.combobox2)
self.tablewidget2.setCellWidget(1, 1, QComboBox())
self.widget2_layout.addWidget(self.tablewidget2)
# TableWidget3
self.tablewidget3 = QTableWidget(2, 2)
self.tablewidget3.setItem(0, 0, QTableWidgetItem("CheckBox31"))
self.tablewidget3.setItem(1, 0, QTableWidgetItem("CheckBox32"))
self.tablewidget3.setColumnWidth(0, 100)
self.combobox3 = QComboBox()
self.combobox3.addItems(["Option1", "Option2"])
self.tablewidget3.setCellWidget(0, 1, self.combobox3)
self.tablewidget3.setCellWidget(1, 1, QComboBox())
self.widget2_layout.addWidget(self.tablewidget3)
# 创建PushButton
self.pushButton2 = QPushButton("Print CheckBox and ComboBox values")
self.widget2_layout.addWidget(self.pushButton2)
self.pushButton2.clicked.connect(self.print_values)
# 隐藏第二个Widget
self.widget2.hide()
def show_hide_widget2(self):
if self.widget2.isVisible():
self.widget2.hide()
else:
self.widget2.show()
def print_values(self):
# 打印CheckBox1和CheckBox2的值
if self.checkBox1.isChecked():
print("CheckBox1 is checked")
else:
print("CheckBox1 is not checked")
if self.checkBox2.isChecked():
print("CheckBox2 is checked")
else:
print("CheckBox2 is not checked")
# 打印TableWidget1中的CheckBox的值
if self.checkBox1.isChecked():
print("TableWidget1 CheckBox11 is checked")
else:
print("TableWidget1 CheckBox11 is not checked")
if self.checkBox1.isChecked():
print("TableWidget1 CheckBox12 is checked")
else:
print("TableWidget1 CheckBox12 is not checked")
# 打印TableWidget2中的CheckBox的值
if self.checkBoxA.isChecked():
print("TableWidget2 CheckBoxA1 is checked")
else:
print("TableWidget2 CheckBoxA1 is not checked")
if self.checkBoxA.isChecked():
print("TableWidget2 CheckBoxA2 is checked")
else:
print("TableWidget2 CheckBoxA2 is not checked")
if self.checkBoxB.isChecked():
print("TableWidget2 CheckBoxB1 is checked")
else:
print("TableWidget2 CheckBoxB1 is not checked")
if self.checkBoxB.isChecked():
print("TableWidget2 CheckBoxB2 is checked")
else:
print("TableWidget2 CheckBoxB2 is not checked")
# 打印TableWidget中的ComboBox的值
print("TableWidget1 ComboBox1 value:", self.combobox1.currentText())
print("TableWidget2 ComboBox1 value:", self.combobox2.currentText())
print("TableWidget3 ComboBox1 value:", self.combobox3.currentText())
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
```
在这个示例中,我们创建了一个 MainWindow 类,继承自 QMainWindow。MainWindow 中包含两个 Widget:widget1 和 widget2。widget1 包含四行,第一行和第二行包含 QLabel 和 QComboBox,第三行包含两个 QCheckBox,第四行包含一个 QPushButton。点击 QPushButton 可以显示或隐藏 widget2。widget2 包含三个 QTableWidget,每个 QTableWidget 都包含两列,第一列是 QCheckBox,第二列是 QComboBox。点击 widget2 中的 QPushButton 可以打印 widget1 和 widget2 中所有 QCheckBox 和 QComboBox 的值。
阅读全文
相关推荐


















