当前位置: 首页 > news >正文

懒加载示例

import sys
from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget, QHBoxLayout, QVBoxLayout,QPushButton, QStackedWidget, QLabel
)
from PySide6.QtCore import Qt# pages
class HomePage(QWidget):def __init__(self):super().__init__()self.setLayout(QVBoxLayout())self.layout().addWidget(QLabel("🏠 首页内容"))class SettingsPage(QWidget):def __init__(self):super().__init__()self.setLayout(QVBoxLayout())self.layout().addWidget(QLabel("⚙️ 设置页面"))class AboutPage(QWidget):def __init__(self):super().__init__()self.setLayout(QVBoxLayout())self.layout().addWidget(QLabel("ℹ️ 关于我们"))class MainWindow(QMainWindow):def __init__(self):super().__init__()self.initUI()# 页面字典self.page_dicts = {"home": HomePage,"settings": SettingsPage,"about": AboutPage,}self.page_instances = {}  # 缓存已创建的页面# 默认显示首页self.switch_page("home")self.btn_click()def initUI(self):self.setWindowTitle("Lazy Loading")self.resize(600, 400)central = QWidget()main_layout = QHBoxLayout(central)self.setCentralWidget(central)# ===== 左侧:按钮菜单 =====        left_widget = QWidget()        left_widget.setFixedWidth(120)menu_layout = QVBoxLayout()self.btn_home = QPushButton("首页")self.btn_settings = QPushButton("设置")self.btn_about = QPushButton("关于")menu_layout.addWidget(self.btn_home)menu_layout.addWidget(self.btn_settings)menu_layout.addWidget(self.btn_about)menu_layout.addStretch()  # 推按钮到顶部main_layout.addWidget(left_widget)left_widget.setLayout(menu_layout)# ===== 右侧:内容区 =====self.stacked_widget = QStackedWidget()main_layout.addWidget(self.stacked_widget)def btn_click(self):# 绑定点击事件(统一用 lambda 传参)self.btn_home.clicked.connect(lambda: self.switch_page("home"))self.btn_settings.clicked.connect(lambda: self.switch_page("settings"))self.btn_about.clicked.connect(lambda: self.switch_page("about"))        def switch_page(self, page_key):if page_key not in self.page_instances:            #page_class = self.page_dicts[page_key]page_instance = page_class()self.page_instances[page_key] = page_instanceself.stacked_widget.addWidget(page_instance)# 切换显示self.stacked_widget.setCurrentWidget(self.page_instances[page_key])if __name__ == "__main__":app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec())
http://www.hn-smt.com/news/144794/

相关文章:

  • 项目复审
  • 《智慧书》
  • 《蔡磊:纵使身体陨落,也要向死而生》
  • 本人,当福利送你们了.单部五层电梯报告 单部五层电梯,基于西门子1200 博图V15 1、外呼梯功能
  • 2025重庆最新建筑加固改造、钢筋打断修复、土建、现浇、楼板开裂修复首选推荐现浇王子:重庆本土专业团队,铸就安心工程 - 全局中转站
  • 2025重庆最新建筑加固改造品牌TOP5 评测!优质服务商及企业权威榜单发布,技术赋能构筑建筑安全新生态 - 全局中转站
  • WebTopo拓扑图编辑器:从业务痛点出发的完整可视化解决方案
  • 吸烟如何“改写”你的DNA?新研究揭示表观遗传时钟与肺癌风险的秘密!
  • 【毕业设计】基于springboot的滑雪售票系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 还在纠结项目该用啥模型?GLM - 4.7、MiniMax - M2.1 上线 ,限免体验,基于API完成AI面试助手项目!
  • 学长亲荐9个AI论文工具,MBA毕业论文轻松搞定!
  • 【教程4>第10章>第9节】基于FPGA的图像双边滤波开发——理论分析与matlab仿真
  • Springboot小区物业管理系统ia0at(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【北京师范大学主办 | ACM出版 | 海内外高校、IEEE Fellow等学术大咖参与并大力支持 | 往届EI已检索!检索记录齐全】第三届信息化教育与计算机技术国际学术会议(IECA 2026)
  • 从梯度提升树到分布式机器学习算法的突破
  • 多模态突破:AI规模化应用的关键密码
  • CSS 文本样式与阴影整理笔记
  • 矿机商凭什么能拿到AI帝国的入场券?
  • Windows桌面应用运行环境革新:智能化部署解决方案全解析
  • 人工智能之数学基础 离散数学:第二章 图论
  • 自然灾害与交通事故无人机检测数据集VOC+YOLO格式372张5类别
  • day20-智能换脸上线
  • 一文搞定Web 自动化之文件上传!
  • MPEG DASH 是什么
  • 理解SPA测试的核心挑战
  • DNA存储技术新突破:磁带形态实现海量数据存储
  • 基于SSM的学科竞赛全流程管理系统的设计与实现
  • 基于 YOLOv8 的驾驶员疲劳状态识别系统实战(含完整源码与可视化界面)
  • 导诊机器人接口集成完全指南:猎户星空等主流品牌技术深度解析 - 资讯焦点
  • 2025 十大高清壁纸素材网站!正版商用图库闭眼冲 - 品牌2026