在使用 QtPy(一个提供 PyQt 和 PySide 统一接口的库)时,可以通过不同的方式实现页面跳转。一般来说,页面跳转是指在应用程序中切换不同的界面或窗口。下面是几种常见的方法来实现这一功能。
方法 1: 使用 QStackedWidget
QStackedWidget 允许你在多个页面之间切换,这是一种常见的方式来实现页面跳转。
示例代码
import sys
from qtpy.QtWidgets import QApplication, QMainWindow, QStackedWidget, QPushButton, QWidget, QVBoxLayout, QLabel
class PageOne(QWidget):
def __init__(self, switch_page):
super().__init__()
layout = QVBoxLayout()
layout.addWidget(QLabel("This is Page One"))
button = QPushButton("Go to Page Two")
button.clicked.connect(lambda: switch_page(1))
layout.addWidget(button)
self.setLayout(layout)
class PageTwo(QWidget):
def __init__(self, switch_page):
super().__init__()
layout = QVBoxLayout()
layout.addWidget(QLabel("This is Page Two"))
button = QPushButton("Go to Page One")
button.clicked.connect(lambda: switch_page(0))
layout.addWidget(button)
self.setLayout(layout)
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Page Navigation Example")
self.stacked_widget = QStackedWidget()
self.setCentralWidget(self.stacked_widget)
self.page_one = PageOne(self.switch_page)
self.page_two = PageTwo(self.switch_page)
self.stacked_widget.addWidget(self.page_one)
self.stacked_widget.addWidget(self.page_two)
self.stacked_widget.setCurrentIndex(0) # Start on Page One
def switch_page(self, page_index):
self.stacked_widget.setCurrentIndex(page_index)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
代码说明
1、创建页面类: PageOne 和 PageTwo 是两个不同的页面,包含一个标签和一个按钮。
2、创建主窗口: MyWindow 类是主窗口,包含一个 QStackedWidget。
3、切换页面: switch_page 方法用于切换到指定索引的页面。
4、初始化: 在 __main__ 中创建应用实例并显示主窗口。
方法 2: 使用多个窗口
你还可以通过创建多个窗口来实现页面跳转。以下是一个简单的示例:
示例代码
import sys
from qtpy.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QWidget, QVBoxLayout
class PageOne(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Page One")
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
layout.addWidget(QLabel("This is Page One"))
button = QPushButton("Go to Page Two")
button.clicked.connect(self.open_page_two)
layout.addWidget(button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def open_page_two(self):
self.page_two = PageTwo()
self.page_two.show() # 打开 Page Two 窗口
self.close() # 关闭当前窗口
class PageTwo(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Page Two")
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
layout.addWidget(QLabel("This is Page Two"))
button = QPushButton("Go to Page One")
button.clicked.connect(self.open_page_one)
layout.addWidget(button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def open_page_one(self):
self.page_one = PageOne()
self.page_one.show() # 打开 Page One 窗口
self.close() # 关闭当前窗口
if __name__ == '__main__':
app = QApplication(sys.argv)
window = PageOne()
window.show()
sys.exit(app.exec_())
小结
通过以上两种方法,你可以在 QtPy 应用中实现页面跳转。