python QT界面跳转
时间: 2023-07-05 13:16:12 浏览: 100
要在Python中实现QT界面的跳转,可以使用QStackedWidget。QStackedWidget是一个容器小部件,它可以在其中包含多个小部件,并通过索引进行访问。我们可以在QStackedWidget中添加多个QWidget,每一个QWidget代表一个界面。通过改变当前QWidget的索引,就可以实现不同界面的切换。
以下是一个示例代码,其中包含两个界面,分别为HomeWidget和SettingsWidget。在HomeWidget中点击按钮可以跳转到SettingsWidget,在SettingsWidget中点击返回按钮可以回到HomeWidget。
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QWidget, QPushButton, QVBoxLayout, QHBoxLayout, QLabel
class HomeWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.label = QLabel("Home Widget")
self.button = QPushButton("Go to Settings")
self.button.clicked.connect(self.go_to_settings)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)
def go_to_settings(self):
self.parent().setCurrentIndex(1) # 切换到第二个界面
class SettingsWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.label = QLabel("Settings Widget")
self.button = QPushButton("Go back to Home")
self.button.clicked.connect(self.go_to_home)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)
def go_to_home(self):
self.parent().setCurrentIndex(0) # 切换回第一个界面
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.stacked_widget = QStackedWidget()
self.home_widget = HomeWidget(self.stacked_widget)
self.settings_widget = SettingsWidget(self.stacked_widget)
self.stacked_widget.addWidget(self.home_widget)
self.stacked_widget.addWidget(self.settings_widget)
self.setCentralWidget(self.stacked_widget)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例中,我们首先定义了两个界面,分别为HomeWidget和SettingsWidget。然后在MainWindow中创建了一个QStackedWidget,并将两个界面添加到其中。最后,我们将QStackedWidget设置为MainWindow的中央小部件。
在HomeWidget中,我们定义了一个按钮,点击该按钮可以跳转到SettingsWidget。在go_to_settings函数中,我们使用`self.parent().setCurrentIndex(1)`来切换到第二个界面。
在SettingsWidget中,我们定义了一个返回按钮,点击该按钮可以回到HomeWidget。在go_to_home函数中,我们使用`self.parent().setCurrentIndex(0)`来切换回第一个界面。
阅读全文