一个QTableWidget 里放两张表,根据点击不同按钮展示两种界面
时间: 2023-06-13 12:08:51 浏览: 102
你可以考虑使用QStackedWidget来实现这个功能。QStackedWidget是一个容器,可以在其中添加多个QWidget,并且只有当前显示的QWidget会在界面上显示出来。你可以将两个QTableWidget分别添加到两个QWidget中,然后将这两个QWidget添加到QStackedWidget中。然后在按钮的点击事件中,根据不同的按钮,切换QStackedWidget中不同的QWidget,从而展示不同的QTableWidget。
下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QStackedWidget, QVBoxLayout, QPushButton
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建两个QTableWidget并添加内容
table1 = QTableWidget()
table1.setRowCount(2)
table1.setColumnCount(2)
table1.setItem(0, 0, QTableWidgetItem("A"))
table1.setItem(0, 1, QTableWidgetItem("B"))
table1.setItem(1, 0, QTableWidgetItem("C"))
table1.setItem(1, 1, QTableWidgetItem("D"))
table2 = QTableWidget()
table2.setRowCount(2)
table2.setColumnCount(2)
table2.setItem(0, 0, QTableWidgetItem("E"))
table2.setItem(0, 1, QTableWidgetItem("F"))
table2.setItem(1, 0, QTableWidgetItem("G"))
table2.setItem(1, 1, QTableWidgetItem("H"))
# 创建QStackedWidget并添加两个QWidget
stackedWidget = QStackedWidget()
widget1 = QWidget()
widget2 = QWidget()
widget1Layout = QVBoxLayout()
widget2Layout = QVBoxLayout()
widget1Layout.addWidget(table1)
widget2Layout.addWidget(table2)
widget1.setLayout(widget1Layout)
widget2.setLayout(widget2Layout)
stackedWidget.addWidget(widget1)
stackedWidget.addWidget(widget2)
# 创建切换按钮
button1 = QPushButton("表1")
button2 = QPushButton("表2")
# 按钮点击事件,根据不同按钮切换不同QWidget
button1.clicked.connect(lambda: stackedWidget.setCurrentIndex(0))
button2.clicked.connect(lambda: stackedWidget.setCurrentIndex(1))
# 创建主布局并添加组件
layout = QVBoxLayout()
layout.addWidget(button1)
layout.addWidget(button2)
layout.addWidget(stackedWidget)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在这个示例中,我们创建了两个QTableWidget,并将它们添加到两个QWidget中。然后,我们创建了一个QStackedWidget,并将这两个QWidget添加到其中。最后,我们创建了两个按钮,并在它们的点击事件中切换QStackedWidget中不同的QWidget。最终实现了根据不同按钮展示不同QTableWidget的功能。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)