第15.35节 PyQt编程实战:结合QDial实现的QStackedWidget堆叠窗口程序例子

QStackedWidget类的使用 Qt,QStackedWidget 阅读详情

一、案例说明

本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStackedWidget展示一个文件目录下的图片文件,可以有多种实现方式,在本案例中一个图片文件使用QStackedWidget的一个页面窗口展现,有多少图片文件就有多少页面窗口。

二、案例实现

2.1、ui界面设计

2.1.1 设计一个显示图象文件的窗口对象

在这里插入图片描述
该对象中包括一个窗口(QWidget类型的窗口,名称为GraphicFileView)和两个子对象,最上面是一个显示图像文件名的label(名称为graphicFileName),下面是一个显示图像文件的QGraphicsView对象(名称为graphicsView),整个ui保存在文件ui_GraphicFileView.ui中。

这个UI窗口用于显示一个图像文件,其实例对象作为QStackedWidget的一个页面窗口部件对象。

2.1.2、 设计主界面窗口对象

在这里插入图片描述
主界面窗口除了主窗口(类型QWidget,名为mainWin)对象外,还有2个对象,分别是QStackedWidget堆叠窗口对象(名为stackedWidget),另外有一个QDial对象,名为dial。

其中stackedWidget就是用于保存所有展示图像的窗口,dial是一个表盘,用于控制stackedWidget当前页面窗口的索引,表盘上每个刻度对应一个顺序索引的数字,该表盘通过鼠标可以旋转到任意刻度,可以使用光标控制的上键和下键逆时针或顺时针移动一个刻度。

2.2、实现图像显示类

图像显示类从ui_GraphicFileView.ui生成的ui_GraphicFileView.py模块的Ui_GraphicFileView类派生一个子类graphicFileView,该子类实现从指定图像文件装载图像展示,并通过名字为graphicFileName的label展示图像文件名。

下面是graphicFileView相关代码的大致结构:
class graphicFileView(QtWidgets.QWidget,ui_GraphicFileView.Ui_GraphicFileView):
    def __init__(self,filename=None):
        super().__init__()
        self.setupUi(self)
        self.loadGraphicFile (filename)

    def loadGraphicFile(self,fileName):
        if fileName:
            #装载图片文件
            ......

2.3、实现主窗口类

主窗口类从ui_mainwin.Ui_mainWin派生,包括构造方法__init__、堆叠窗口初始化方法initPages、表盘初始化方法initDial、表盘刻度变化槽方法valueChanged。

相关代码结构大致如下:
class mainWin(QtWidgets.QWidget,ui_mainwin.Ui_mainWin):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.initPages()
        self.dial.valueChanged.connect(self.valueChanged)

    def initPages(self):
        dir = "F:\\学习\\python\\project\\stackWidget\\资源"
        self.itemCountMinus12 = False
        ...... 
        for file in files:
            
            graphicView = graphicFileView.graphicFileView(filename)
            self.stackedWidget.addWidget(graphicView)
            print(filename)

        self.stackedWidget.setCurrentIndex(0)

        self.initDial()

    def initDial(self):
       
        if self.itemCountMinus12:self.dial.setSingleStep(12)
        else:  self.dial.setSingleStep(1)
	    ......

    def valueChanged(self,value):
        index = value
        ......
        if index:self.stackedWidget.setCurrentIndex(index-1)
        else:self.stackedWidget.setCurrentIndex(count)
注意:
  • 在处理表盘刻度时,根据目录下的文件数量做了个处理,如果文件数量小于12个,则将最大刻度值设置为文件数量乘以12,这样做的目的是为了将表盘的空间最小做到12等分
  • 堆叠窗口的个数与文件个数相同,在Designer中设计时将Designer中默认创建的两个页面窗口删除了,所有页面窗口全部由initPages方法重新创建
  • 程序中没有异常处理

三、运行界面截图

下面是运行时的两个截图:
在这里插入图片描述
在这里插入图片描述

广告

老猿关于PyQt的付费专栏《使用PyQt开发图形界面Python应用》只需要9.9元,该部分与第十五章的内容基本对应,但同样内容在付费专栏上总体来说更详细、案例更多。本节内容对应付费专栏的《PyQt开发案例:结合QDial实现的QStackedWidget堆叠窗口程序例子及完整代码》。如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

PYQT5 实现界面的嵌套 新手,因为查阅各种博客太多,有点混,而且也找不到原本的网址了,所以就自己当作笔记记下,以便以后回来查看。 自己比较会的编程语言就只有python了,但是因为老师那边要求做一个桌面应用程序,对于python来说,我比较喜欢的就是用PYQT5了。这里简单引用下网上(https://www.jianshu.com/p/ef71566ff8bb)的说法:QT原本是诺基亚的产品,源码是用C++写的,pyt... 阅读详情

相关推荐

PyQt学习笔记:QDial刻度盘部件功能简介

通过使用QDial的其他方法和信号,我们还可以实现更多功能,比如设置刻度的间隔、设置刻度盘的外观样式等。在这个例子中,我们使用了一个匿名函数来将变化的数值转换为字符串,并将其设置为QLabel的文本。QDial是PyQt中的一个常用部件,它提供了一个可旋转的刻度盘,用于选择一个数值。方法中,我们创建了一个垂直布局,并向其中添加了一个QDial和一个QLabel。然后,我们将QDial和QLabel添加到布局中,并将布局设置为窗口的主布局。最后,我们设置了窗口的标题和初始位置,并显示了窗口。

laugh666的博客 258

PyQt6第四章控件功能之4.2常用控件(4.3.4旋钮:QDial)

Dial控件,又称为旋钮控件,它对应QDial类。它本质上类似于一个滑块控件,只是显示的样式不同。这里选择了 'Arial Black' 字体,并设置了字号为 16。这样,无论旋钮的值是多少,它都会始终在标签中居中显示。这是创建和配置控件的常用方式,使得。:启动应用程序的事件循环,并等待用户交互。这意味着布局将管理主窗口中的控件位置和大小。setFixedSize ():设置旋钮的大小。设置为窗口的布局管理器。setRange():设置表盘的数值范围。中的控件都会根据布局的规则来显示。方法更加清晰和简洁。

qq_43960238的博客 1237

Qt容器QStackedWidget小部件堆栈

QStackedWidget 继承 QFrame。QStackedWidget 类提供了一个小部件堆栈,其中一次只能看到一个小部件,与 QQ 的设置面板类似。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 911

实战PyQt5: 037-表盘控件QDial

QDial简介 QDial是一个圆表盘控件, 各种仪表仪盘都可以抽象成一个圆表盘控件,例如汽车仪表盘上的速度计,就是一个圆表盘。 QDial继承自QAbstractSlider,因此也继承了相应的方法和信号,除此以外,它还有一些自身的常用方法。 QDial常用方法: setNotchesVisible(): 设置是否显示刻度 notchesVisile(): 刻度可见返回True,不可见返回False setWrapping(): 设置是否回绕 wrapping(): 如果回绕则返回True,

seniorwizard的专栏 3884

Python RK3588 MPP 8路视频硬解码!全体目光向我看齐!

本文重写了官方demo、加入了Zlmediakit进行拉流并通过pybind11将代码封装成so库,现在,在python中直接通过import的方式,就能完成基础的拉流解码操作,目前支持8路拉流解码!!!

m0_46303486的博客 4880

基于FPGA的数据采集系统(一)

整体系统设计 本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下: 图1:FPGA数据采集系统框图 从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D..

phflovelt的博客 2万+

PyQt6 QDial旋钮控件

缺口大小在范围控制单元中,而不是像素,并且如果可能的话,它是singleStep()的倍数,导致在notchTarget()附近的屏幕上的切口尺寸。如果启用,箭头的方向可以是任意角度。如果它旋转到刻度盘底部的空间中,它将被钳位到有效值范围的最近端。如果属性为true,则在刻度盘周围绘制一系列凹槽以指示可用值的范围;QDial旋钮控件,它本质上类似于一个滑块控件,只是显示的样式不同。陷波目标是QDial尝试在每个陷波之间放置的像素数量。默认情况下,该属性为false。默认情况下,此属性的值为1。

java1234的博客 463

网络工程师的Python入门实战:手把手教你写交换机配置备份脚本

本文详细介绍了如何利用Python为网络工程师开发一个高效的交换机配置备份脚本,涵盖环境搭建、设备连接方案、智能设备发现、多因素认证、异常处理、配置差异对比等关键步骤。通过实战案例展示如何将备份时间从4小时缩短至15分钟,显著提升运维效率,特别适用于华为交换机等设备的配置导出与备份需求。

weixin_30291791的博客 304

PyQt5_QDial_圆表盘控件案例

# 倒圆的范围控制 # 汽车仪表盘速度计 # QDial from PyQt5.Qt import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QDial_操作') self.resize(500,500) ...

瓜地考拉 2555

Jupyter实战:解决ModuleNotFoundError之xgboost缺失问题

本文详细解析了在Jupyter Notebook中遇到ModuleNotFoundError: No module named 'xgboost'错误的完整解决方案。通过诊断环境、使用pip正确安装xgboost、配置Python路径以及最终验证,帮助用户彻底解决模块缺失问题,并理解Jupyter内核与Python环境的关系,提升问题排查能力。

weixin_29064103的博客 384

Visual Studio 6.0 镜像下载全指南:从企业版到中文版

本文提供Visual Studio 6.0企业版和中文版的镜像下载全指南,包括详细版本解析、已验证的下载链接及校验信息。针对现代系统的安装技巧和兼容性处理方案,帮助开发者高效获取并运行这一经典开发工具,特别适合维护遗留系统的专业人员。

weixin_33712987的博客 1034

python中stacked_第15.35节 PyQt编程实战:结合QDial实现的QStackedWidget堆叠窗口程序例子...

一、案例说明本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStackedWidget展示一个文件目录下的图片文件,可以有多种实现方式,在本案例中一个图片文件使用QStackedWidget的一个页面窗口展现,有多少图片文件就有多少页面窗口。二、案例实现2.1、ui界面设计2.1.1 设计一个显示图象文件的窗口对象该对象中包括一个窗口(QWidget类型的窗口,名称为G...

weixin_34676685的博客 439

Rokid眼镜高精度图像识别的五大工程破局点

图像识别是AR交互的基础能力,其核心在于将现实图像映射为可计算的数字特征,并通过几何建模解算空间姿态。在专用AR眼镜场景中,该过程面临光学畸变、传感器时序错位、低延迟跟踪与人因适配等复合挑战。尤其在工业现场,Rokid Max系列的鱼眼镜头畸变、IMU-视觉异步采样、窄FOV下快速眼动等物理约束,使传统基于AR Foundation或OpenCV的识别方案失效。本文聚焦真实部署中的关键瓶颈,涵盖实时反畸变纹理渲染、原生SDK直调优化、端侧轻量CNN模型(TinyImageNet-Rokid)、IMU-视觉紧

weixin_33681778的博客 697

使用PyQt进行Python图形界面程序开发文章目录

☞ ░ 前往老猿Python博文目录 ░ PyQt入门知识原来是作为老猿Python《Python基础教程目录》后的进阶学习章节存在,最近不少专栏作者提醒老猿整体的博文内容不错,但博文没有有效组织起来,看起来比较杂乱。因此准备在博文首页重点将相关文章的目录整理一下。 本部分为免费专栏《PyQt入门知识目录》教程目录列表,整个PyQt入门专题的内容以Designer中的部件为主线,穿插介绍了安装、程序开发过程、事件、信号、Model/View架构、打包等内容,作为一个基础入门的PyQt内容来说应该说还是很不

老猿Python 7357

拼多多全站商品SKU数据爬虫实战:Python自动化采集与清洗

在电商数据分析领域,SKU(Stock Keeping Unit,库存量单位)数据是洞察商品策略、价格体系和市场竞争格局的核心抓手。本文以拼多多平台为研究对象,系统讲解如何利用Python构建一套完整的全站商品SKU自动化采集与清洗流程。文章涵盖目标分析与反爬策略、网络请求模拟、数据解析、分布式存储、数据清洗与标准化,以及调度与运维等全链路环节,并提供可直接运行的代码示例。拼多多API返回的数据结构大致如下(已脱敏):json"goods_name": "某品牌运动鞋",

2201_76125261的博客 216

系统分析师论文范文(三)微服务

摘要(300字) 2024年4月,我作为系统分析师参与某省三甲医院云影像系统建设项目,负责系统分析与设计工作。该项目旨在响应国家"无胶片化"医疗政策,解决传统影像系统数据孤岛、调阅效率低等问题。系统基于DICOM 3.0和HL7国际标准,采用B/S架构与Spring Cloud Alibaba微服务技术栈,包含影像采集、智能分析、数据安全等核心模块,实现全院影像资源的云端统一管理与多端调阅。在架构设计上,通过微服务拆分、分布式事务控制及多层次安全防护机制,保障了系统的高可用性与数据一致性。系统于2024年1

echo的博客 221

第十五章 使用PyQt进行Python图形界面程序开发

在基础知识部分的最后一章《第十三章 Python基础篇结束章》的《第13.3节 图形界面开发tkinter》简单介绍了Python内置图形界面标准库tkinter,当时特别强调tkinter没有图形开发的设计界面,使用复杂,且存在功能问题不推荐使用,将学习朋友推荐的PyQt。 本章正式进入PyQt相关内容的学习,注意PyQt是GPL软件(GPL是GNU General Public License...

老猿Python 6860

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PyQt5之QDial对象

简介 倒圆的范围控制,比如汽车仪表盘上的速度计; 继承自QAbstractSlider 是否显示刻度 setNotchesVisible(bool) notchesVisible() -> bool 刻度控制 setPageStep(int) 是否启用包裹 setWrapping(bool) 凹口之间的目标像素数 setNotchTarget(float) 缺口大小 notchSiz...

weixin_43496130的博客 765

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PyQt5利用Qt designer(QT设计师)使用tab widget和stacked widget实现多页面切换

本文介绍了如何通过PyQt5的 Qt designer(QT设计师),使用tab widget和stacked widget控件实现多页面切换功能

hubing_hust的专栏 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PyQt6 学习笔记_3 Widgets(笔记部分)

请搭配代码部分食用,介绍了一些基础的小部件。

the_world_god1的博客 1293

Qt学习笔记——停靠窗口QDockWidget

    QDockWidget 这是一个停靠窗口,可停靠在主窗口的上下左右边框,停靠窗口显示的内容需要通过插入内容进行显示   函数: void setWidget(QWidget * widget);  插入一个widget,作为停靠窗口显示内容 void setFeatures(DockWidgetFeatures features);  设置窗口特性   QDockWidg...

Saqino的博客 8096

QStackedWidget 的高级使用方法

在 Qt 开发中,构建复杂的 GUI 应用常常面临一个挑战:如何优雅地管理多个页面,并在它们之间进行切换?今天,我将介绍一种基于 QStackedWidget 和工厂模式的解决方案,帮助你轻松实现多页面应用。QStackedWidget 是 Qt 框架中一个强大的容器小部件,它允许你将多个子窗口堆叠在一起,但只显示最上面的一个。这种特性类似于实体世界中的卡片堆叠,每次只能看到最顶部的卡片。

m0_47514670的博客 1090

QStackedWidget示例

QStackedWidget示例 按Button1切到widget2 ,按Button2切到widget1 ,Button3是装饰。

qq_39467371的博客 355

QT-QStackedWidget多窗口应用

qt多窗口应用

HES_C的博客 4481

QStackedWidget类的用法与代码案例

使用QListWidget和QStackedWidget实现一个动物百科全书。currentChanged信号用法。widgetRemoved信号用法。

2301_81261654的博客 503

PyQt5组件之QStackedWidget

QStackedWidget简介 QTackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QStackedWidget使用QStackedLayout布局。QSTackedWidget控件与QTabWidget类似,可以有效的显示窗口的控件 QStackedWidget效果截图: PyQt 设计器截图: *.ui 转换为*.py 代码 # -*- coding: utf-8 -*- # Form implement...

zhouzhiwengang的专栏 3342
上一篇: PyQt开发案例:结合QDial实现的QStackedWidget堆叠窗口程序例子及完整代码
下一篇: Python基础教程目录
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值