pyqt5菜单栏多界面切换
时间: 2023-06-12 09:06:10 浏览: 210
PyQT实现多窗口切换
在 PyQt5 中,可以使用 QStackedWidget 实现多界面切换。下面是一个简单的示例代码,演示如何使用菜单栏和 QStackedWidget 实现多界面切换:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QStackedWidget, QWidget, QVBoxLayout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建菜单栏
menubar = self.menuBar()
filemenu = menubar.addMenu('文件')
# 创建菜单项
switchmenu = QMenu('切换', self)
filemenu.addMenu(switchmenu)
switchmenu.addAction(QAction('页面1', self))
switchmenu.addAction(QAction('页面2', self))
# 创建 QStackedWidget
self.stack = QStackedWidget(self)
self.setCentralWidget(self.stack)
# 创建两个界面
self.page1 = QWidget()
self.page2 = QWidget()
# 将两个界面添加到 QStackedWidget 中
self.stack.addWidget(self.page1)
self.stack.addWidget(self.page2)
# 在第一个界面添加一些控件
layout1 = QVBoxLayout()
self.page1.setLayout(layout1)
layout1.addWidget(QAction('这是第一个界面'))
# 在第二个界面添加一些控件
layout2 = QVBoxLayout()
self.page2.setLayout(layout2)
layout2.addWidget(QAction('这是第二个界面'))
# 连接菜单项的信号和槽函数
switchmenu.triggered.connect(self.switch_page)
def switch_page(self, action):
# 判断点击的是哪个菜单项
if action.text() == '页面1':
self.stack.setCurrentIndex(0)
elif action.text() == '页面2':
self.stack.setCurrentIndex(1)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例代码中,我们创建了一个菜单栏,并在菜单栏中添加了一个“切换”子菜单。在“切换”子菜单中,我们添加了两个菜单项,分别对应两个界面。在界面中,我们使用 QVBoxLayout 将一个 QAction 添加到界面中。
在 switch_page 函数中,我们根据点击的菜单项来切换界面。我们使用 setCurrentIndex 函数来设置当前显示的界面。
注意,我们需要将 QStackedWidget 设置为 QMainWindow 的中心窗口,以使其占据整个窗口。
阅读全文