pyqt5实现分层界面
时间: 2023-09-02 22:11:45 浏览: 92
PyQt5可以通过QStackedWidget控件来实现分层界面。
QStackedWidget控件是一个容器控件,它可以在其中添加多个子控件,并且只显示其中的一个子控件。可以通过切换显示的子控件来实现分层界面。
以下是一个简单的示例代码,演示如何使用QStackedWidget实现分层界面:
```
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QStackedWidget, QVBoxLayout
class Layer1(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel("Layer 1")
layout = QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
class Layer2(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel("Layer 2")
layout = QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.stack = QStackedWidget()
self.layer1 = Layer1()
self.layer2 = Layer2()
self.stack.addWidget(self.layer1)
self.stack.addWidget(self.layer2)
button1 = QPushButton("Layer 1")
button1.clicked.connect(self.show_layer1)
button2 = QPushButton("Layer 2")
button2.clicked.connect(self.show_layer2)
layout = QVBoxLayout()
layout.addWidget(self.stack)
layout.addWidget(button1)
layout.addWidget(button2)
self.setLayout(layout)
def show_layer1(self):
self.stack.setCurrentWidget(self.layer1)
def show_layer2(self):
self.stack.setCurrentWidget(self.layer2)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例代码中,我们创建了两个自定义QWidget子类Layer1和Layer2,以及一个包含QStackedWidget和两个QPushButton的MainWindow。
在MainWindow的构造函数中,我们将Layer1和Layer2添加到QStackedWidget中,并将QStackedWidget添加到MainWindow的布局中。然后分别为两个QPushButton设置了单击事件,单击后调用QStackedWidget的setCurrentWidget方法来显示不同的子控件。
阅读全文