python使用QtWidgets做一个左侧导航,点击后控制右侧的部分显示不同内容,请给出代码
时间: 2024-10-09 22:01:43 浏览: 24
Python 中使用 Qt Widgets 创建一个左侧导航栏并联动右侧展示内容通常涉及到信号槽(Signals and Slots)机制。这里是一个简单的例子,假设我们有 `LeftNav` 和 `RightContent` 两个类分别代表左侧导航和右侧内容区域:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QPushButton, QWidget
class LeftNav(QWidget):
content_changed = pyqtSignal(str) # 定义一个信号,用于通知右侧内容变化
def __init__(self):
super().__init__()
self.setWindowTitle("左侧导航")
layout = QVBoxLayout()
for i in range(3): # 创建三个按钮作为导航项
button_text = f"内容 {i+1}"
button = QPushButton(button_text)
button.clicked.connect(lambda: self.content_changed.emit(button_text)) # 点击触发信号
layout.addWidget(button)
self.setLayout(layout)
class RightContent(QWidget):
def __init__(self, content):
super().__init__()
self.setWindowTitle(f"右部内容 - {content}")
self.setLayout(QVBoxLayout())
self.text_edit = QTextEdit(content)
self.layout().addWidget(self.text_edit)
app = QApplication(sys.argv)
# 主窗口
main_window = QMainWindow()
left_widget = LeftNav()
right_widget = RightContent("默认内容")
central_widget = QVBoxLayout()
central_widget.addWidget(left_widget)
central_widget.addWidget(right_widget)
main_window.setCentralWidget(central_widget)
left_widget.content_changed.connect(right_widget.update_content) # 连接信号到槽函数
main_window.show()
sys.exit(app.exec_())
def update_content(self, new_content):
self.text_edit.setText(new_content) # 更新右侧内容区的内容
```
在这个例子中,当用户点击左侧导航的任何一个按钮,会触发 `content_changed` 信号,并将按钮的文字作为参数传递。`RightContent` 类的 `update_content` 槽函数接收这个信号并更新右侧的内容。
阅读全文