当前位置: 首页 > 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.jsqmd.com/news/135374/

相关文章:

  • AI辅助论文写作平台排名:9款工具实测,开题到降重全覆盖
  • 2025银川最新家电维修家政服务公司 TOP5 评测!兴庆、金凤、西夏、贺兰县等地区家庭生活服务团队权威榜单发布,专业高效解决家务难题 - 全局中转站
  • 2025银川最新家政保洁中心top5推荐!兴庆区、金凤区、西夏区、贺兰县等地区一站式家庭服务企业权威榜单发布,专业高效赋能品质生活 - 全局中转站
  • PySpark和PyFlink如何写Hive表?
  • 2025 MBA必看!9个AI论文软件测评:开题报告与文献综述全攻略
  • AI论文写作工具测评:9款实测推荐,开题报告与降重功能全面解析
  • P9482 [NOI2023] 字符串
  • 2025年气动单轨吊供应商市场占有率排名发布,20吨气动葫芦/手拉式气动葫芦/矿山气动葫芦/气动葫芦气动单轨吊供货厂家怎么选择 - 品牌推荐师
  • 大模型与传统AI的代际差异及大小协同的未来
  • Prodigy-HF 工具发布:NER训练与数据上传功能
  • 实用指南:【保姆级教程】apache-tomcat的安装配置教程
  • 《沉思》-摘
  • 从识别到深耕:鲸鸿动能在鸿蒙生态下的游戏用户价值增长实践
  • PySpark和PyFlink如何读取Hive中的表?
  • 项目复审
  • 【计算机毕业设计案例】基于Java springboot滑雪场售票系统基于springboot的滑雪售票系统设计与实现(程序+文档+讲解+定制)
  • 英语_阅读_curiosity is the key to discovery_待读
  • RS232 串口透传 IP 组网配置
  • 事后分析
  • [CSP-S 2025] 员工招聘
  • Azure DevOps Server 正式版本发布
  • Java 类加载
  • 11574_springboot学生宿舍信息的系统(11574)
  • 基于S7-200 PLC与组态王的机械手自动化搬运控制策略
  • 《智慧书》
  • 永磁同步旋转电机发电并网控制仿真模型详解:涵盖PMSG、整流桥、逆变桥与电网,双闭环PI控制策略应用
  • 回收盒马鲜生礼品卡前必看指南 - 京顺回收
  • 【课程设计/毕业设计】基于springboot+vue的医疗设备管理系统基于SpringBoot+Vue技术的医疗器械管理系统设计与实现【附源码、数据库、万字文档】
  • springboot安康旅游网站的设计与实现(11571)
  • ipv6设置,后面带个参数(指定设备接口名称):br0或ppp0