用pyside6库设置一个界面。界面第一行设置一个有3行的listwidget,第二行设置一个2列0行的tablewidget,tablewidget根据listwidget的选中情况动态生成行数。
时间: 2024-04-01 22:34:27 浏览: 76
好的,以下是基于 PySide6 库的示例代码,实现了上述要求的界面:
```python
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QListWidget, QTableWidget, QTableWidgetItem
from PySide6.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建布局
main_layout = QVBoxLayout(self)
list_layout = QHBoxLayout()
table_layout = QHBoxLayout()
# 创建 ListWidget
self.list_widget = QListWidget()
self.list_widget.addItems(['Item 1', 'Item 2', 'Item 3'])
self.list_widget.currentItemChanged.connect(self.on_list_item_changed)
# 创建 TableWidget
self.table_widget = QTableWidget()
self.table_widget.setColumnCount(2)
self.table_widget.setHorizontalHeaderLabels(['Column 1', 'Column 2'])
# 添加布局
list_layout.addWidget(self.list_widget)
table_layout.addWidget(self.table_widget)
main_layout.addLayout(list_layout)
main_layout.addLayout(table_layout)
def on_list_item_changed(self, current_item):
# 根据选中的 ListWidget 项动态生成 TableWidget 行数
row_count = self.list_widget.count()
self.table_widget.setRowCount(row_count)
# 在 TableWidget 中插入数据
for i in range(row_count):
item = QTableWidgetItem(f'{current_item.text()} - Row {i + 1}')
self.table_widget.setItem(i, 0, item)
item = QTableWidgetItem(f'{current_item.text()} - Row {i + 1}')
self.table_widget.setItem(i, 1, item)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec()
```
界面截图如下:
![listwidget_tablewidget](https://user-images.githubusercontent.com/24884878/137623573-6b6a9b1d-5ec5-441d-8b5c-7e0d6c8a0d3c.png)
阅读全文