pyqt 点击listWidget里项目实现页面切换
时间: 2023-06-27 08:03:35 浏览: 292
要实现点击 `listWidget` 中的项目切换页面,你可以通过以下步骤实现:
1. 创建你想要切换的页面,例如 `Page1` 和 `Page2`。
2. 在 `MainWindow` 类中创建一个 `stackedWidget` 对象,并将 `Page1` 和 `Page2` 添加到其中。
```python
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.stackedWidget = QtWidgets.QStackedWidget(self)
self.setCentralWidget(self.stackedWidget)
self.page1 = Page1()
self.stackedWidget.addWidget(self.page1)
self.page2 = Page2()
self.stackedWidget.addWidget(self.page2)
```
3. 在 `listWidget` 的 `itemClicked` 信号中,根据所选项目的索引切换对应的页面。
```python
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
# ...
self.listWidget.itemClicked.connect(self.change_page)
def change_page(self, item):
index = self.listWidget.indexFromItem(item).row()
self.stackedWidget.setCurrentIndex(index)
```
完整示例代码如下:
```python
from PyQt5 import QtWidgets
class Page1(QtWidgets.QWidget):
def __init__(self):
super().__init__()
label = QtWidgets.QLabel("This is Page 1")
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(label)
class Page2(QtWidgets.QWidget):
def __init__(self):
super().__init__()
label = QtWidgets.QLabel("This is Page 2")
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(label)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.stackedWidget = QtWidgets.QStackedWidget(self)
self.setCentralWidget(self.stackedWidget)
self.page1 = Page1()
self.stackedWidget.addWidget(self.page1)
self.page2 = Page2()
self.stackedWidget.addWidget(self.page2)
self.listWidget = QtWidgets.QListWidget(self)
self.listWidget.addItem("Page 1")
self.listWidget.addItem("Page 2")
self.listWidget.setMaximumWidth(100)
self.addDockWidget(QtWidgets.Qt.LeftDockWidgetArea,
QtWidgets.QDockWidget("Pages", self).setWidget(self.listWidget))
self.listWidget.itemClicked.connect(self.change_page)
def change_page(self, item):
index = self.listWidget.indexFromItem(item).row()
self.stackedWidget.setCurrentIndex(index)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
阅读全文