GUI编程--PyQt5--QLabel

news2024/11/29 22:30:38

文章目录

  • QLabel 文本展示
  • QLabel 图片展示
  • QLCDNumber
  • QProgressBar
  • QErrorMessage
  • QProgressDialog

QLabel 文本展示

展示文本、富文本、图片、动画。

# 实例化
label = QLabel(self)
# 设置文本
label.setText("666")
# 设置图片
label.setPixmap(QPixmap)
label.resize(200, 200)
label.move(100, 100)

# 设置对齐 缩进
label.setAlignment(Qt.AlignmentFlag.AlignRight)
label.setIndent(20)  # 右对齐 右缩进
# 设置边距
label.setMargin(20)  # 内容和label边框的距离

# 设置文本格式
label.setTextFormat(Qt.TextFormat.RichText)

# 设置小伙伴
label.setText("用户(&s):")  # 快捷键
label.setBuddy(le)  # 设置小伙伴
# alt + s 快速跳到le控件

# 调整内容尺寸
label.setScaledContents(True)

# 设置交互
label.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse | Qt.TextInteractionFlag.TextEditable)
label.setSelection(0, 3)  # 从0开始选择3个

# 打开外部链接(不可选择交互)
label.setText("<a href='www.baidu.com' target='_blank'>百度</a>")
label.setOpenExternalLinks(True)  # 打开链接
label.setWordWrap(True) # 单词换行

# 设置内容
label.setText("文本、富文本")
label.setNum(23.9)

# 设置图片
pic = QPicture()  # 图片对象
painter = QPainter(pic)  # 画家对象
painter.setBrush(QBrush(QColor(100, 120, 155))) # 设置画刷
painter.drawEllipse(0, 0, 100, 100)
label.setPicture(QPicture)

label.setPixmap(QPixmap)

# 展示动图
movie = QMovie("./imgs/11.gif")
label.setMovie(movie)
label.resize(600, 500)
moive.start()  #  !! 开始动画
movie.setSpeed(100)  # 设置动画的速度  100%
movie.stop()

# 清空
label.clear()

简单动画:
在这里插入图片描述

登录页面的背景图

def set_ui(self):
    # 实例化label对象
    label = QLabel("测试label", self)
    # 添加gif动画
    movie = QMovie("./imgs/11.gif")
    label.setMovie(movie)
    label.resize(600, 500)
    # 开始动画
    movie.start()
    movie.setSpeed(100)  # 设置速度

    # 用户名
    user_name = QLineEdit(self)
    user_name.setPlaceholderText("用户名")
    user_name.resize(200, 60)
    user_name.move(200, 200)

    pwd = QLineEdit(self)
    pwd.setPlaceholderText("密码")
    pwd.resize(200, 60)
    pwd.move(200, 300)

在这里插入图片描述

label 信号

# 超链接激活时
label.linkActivated.connect(func)  # 若label.setOpenExternalLinks(True) 则无效果
# 鼠标悬浮超链接时
label.linkHovered.connect(func)

 

QLabel 图片展示

内置方法

# 展示图片
def set_ui(self):
    label = QLabel(self)

    pix = QPixmap("./imgs/dog.jpg")
    label.setPixmap(pix)
    label.adjustSize()

调色板 设置窗口背景

def set_ui(self):
    # 实例化调色板对象
    palette = QPalette()
    # 设置背景图
    palette.setBrush(QPalette.Background, QBrush(QPixmap("./imgs/dog.jpg")))
    # 主窗口设置 调色板
    self.setPalette(palette)

在这里插入图片描述
qss 设置响应式的背景图

def set_ui(self):
	# self 必须是QMainWindow对象
    self.setStyleSheet("border-image:url(./imgs/dog.jpg)")

在这里插入图片描述

QLCDNumber

显示LCD样式的数字,展示任何进制、任何大小的数字。

在这里插入图片描述

def set_ui(self):
    lcd = QLCDNumber(5, self) # 最多展示5位数字
    lcd.display(8888888)  # 超出范围则溢出, 显示0
    lcd.display(-553.0)
    lcd.display("777")
    # 获取整型值
    print(lcd.intValue())
    # 获取浮点值
    print(lcd.value())
    # 设置最大位数
    lcd.setDigitCount(8)
    # 显示的进制
    lcd.setMode(QLCDNumber.Mode.Bin)
    # 检查数据是否溢出
    lcd.checkOverflow(100)

    # 信号
    lcd.overflow.connect(func)

 

QProgressBar

进度条,简单使用

# 实例化 进度条  默认0-100
pb = QProgressBar(self)
pb.setMinimum(100)
pb.setMaximum(150)
# 设置当前值,根据  (currentValule - min)/ (max - min) 计算百分比
pb.setValue(123)


# 重置
pb.reset()  # 重置后  pb.value() 为 最小值-1   区间范围不变

在这里插入图片描述
最大值与最小值相等时,进入繁忙状态
 
 

设置文本格式:
在这里插入图片描述

# 设置文本格式 对齐方式
self.pb.setFormat("当前值{} / 总数 {}".format(self.pb.value() - 100, 50))
self.pb.setAlignment(Qt.AlignmentFlag.AlignCenter)

# 设置文本可视
self.pb.setTextVisible(True)
self.pb.text() # 获取文本标签
# 方向
self.pb.setOrientation(Qt.Orientation.Vertical)

# 倒立的走向
self.pb.setInvertedAppearance(True)

在这里插入图片描述
 
 
案例:动态进度条
在这里插入图片描述

  1. QProgressBar + QTimer
def set_ui(self):
   # 实例化 进度条  默认0-100
   self.pb = QProgressBar(self)
   self.pb.setMinimum(100)
   self.pb.setMaximum(150)
   self.pb.resize(400, 50)
   # 信号
   self.pb.valueChanged.connect(lambda val: print("进度更新:", val))
   # 设置当前值,根据  (currentValule - min)/ (max - min) 计算百分比
   self.pb.setValue(123)

   def changeProgress():
       # 判断是否进度拉满
       if self.pb.value() == self.pb.maximum():
           # 停止定时器
           timer.stop()

       # 修改进度值
       self.pb.setValue(self.pb.value() + 1)

   # 设置定时器
   timer = QTimer(self.pb)
   timer.timeout.connect(changeProgress)  # 到时间后,触发timeout信号
   # 1s 执行一次
   timer.start(1000)
  1. 自定义子线程, 子线程结束,主进程退出???
def set_ui(self):
  import time
  import threading

  def func(pb):
      while pb.value() < pb.maximum():
          print("线程正在执行.....", pb, pb.value())
          pb.setValue(pb.value() + 1)
          pb.setFormat("当前值{}/ 总值 {}".format(pb.value() - pb.minimum(), pb.maximum() - pb.minimum()))
          time.sleep(0.5)
      print("子线程结束...")

  # 实例化 进度条  默认0-100
  self.pb = QProgressBar(self)
  self.pb.setMinimum(100)
  self.pb.setMaximum(150)
  self.pb.resize(400, 50)
  # 设置当前值,根据  (currentValule - min)/ (max - min) 计算百分比
  self.pb.valueChanged.connect(lambda val: print("进度更新:", val))
  self.pb.setValue(123)

  # 开启子线程
  th = threading.Thread(target=func, args=(self.pb,), name="progress_bar")
  # th.start()
  th.setDaemon(True)
  th.start()

QErrorMessage

错误信息

def set_ui(self):
    em = QErrorMessage(self)
    em.setWindowTitle("错误信息")
    em.setWindowFlag(Qt.WindowType.WindowContextHelpButtonHint)
    # 展示错误信息
    em.showMessage("777")

 

QProgressDialog

在这里插入图片描述

def set_ui(self):
    pd = QProgressDialog("提示", "取消", 0, 100, self)

    # 设置 弹出延时 2s后自动弹出
    pd.setMinimumDuration(2)

    pd.setWindowTitle("进度提示")
    pd.setAutoReset(False)
    pd.setValue(50)
    # 手动弹出
    pd.open(lambda : print("关闭了...."))


# 其他的
pd.setLabelText("提示")
pd.setCancleButtonText("取消")

# 替换子控件
pd.setBar(QProgressBar)  # 替换进度条
pd.setLabel(QLabel)
pd.setCancleButton(QPushButton)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[BUG] runtime network not ready: NetworkReady=false reason:NetworkPluginNotRead

1 背景 执行kubectl get node是发现节点是NotReady状态&#xff0c;接着执行kubectl describe node 节点名 详细查看NotReady状态原因如下&#xff1a; runtime network not ready: NetworkReadyfalse reason:NetworkPluginNotReady message:docker: network plugin is not r…

数据结构之线性表中的双向循环链表【详解】

前言&#xff1a; 嗯&#xff01;昨天我们的无头单向非循环链表咱已经是可以顺利完成出来了的&#xff0c;今天我们就来看一下什么是有头双向循环链表&#xff0c;不要看着这个链表又双向又循环的就比单向不循环链表难&#xff0c;其实这个更加的简单哦&#xff01;前提是你有…

SpringBoot SpringBoot 原理篇 1 自动配置 1.17 自动配置原理【3】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.17 自动配置原理【3】1.17.1 看源码了1.17.2 小结1 自动配置 1.…

【STA】(1)引言

目录 1. 纳米级设计 2. 什么是STA 3. 为什么要进行STA 4. 设计流程 5. 不同阶段的STA 6. STA的局限性 1. 纳米级设计 在半导体器件中&#xff0c;金属互连线通常被用来连接电路中的各个部分&#xff0c;进而实现整个芯片。随着制造工艺的进一步缩小&#xff0c;这些互连线…

【电源专题】案例:不导这颗MOS管的原因是在电路上不通用?

本案例发生在MOS管替代料导入时。正常情况下在替代料导入、部品导入的时候,我们需要查看规格书。怎么查找规格书可以看文章【电子通识】芯片资料查询方法 对于一些关键的信息我们要做对比,一般来说要通过列表进行对比。但因为不同的供应商的测试标准不同,有很多是很难对比的…

信号与系统2——LTI

信号与系统2——LTI一、Introduction1. Representation of LTI systems2. Significance of unit impulse二、DT-LTI&#xff1a;Convolution Sum1. Output2. Impulse response of LTI system H3. Convolution sum4. Convolution Sum Evaluation Procedure5. Sequence Convoluti…

Python 数据容器(1) - list(列表)

文章目录什么是数据容器&#xff1f;Python中的数据容器数据容器&#xff1a;list&#xff08;列表&#xff09;基本语法案例演示列表的下标&#xff08;索引&#xff09;列表常用操作list容器操作总结什么是数据容器&#xff1f; 一种可以容纳多份数据的数据类型&#xff0c;容…

算法学习 | 回溯算法之深度优先搜索常见题型练习

目录 岛屿的最大面积 电话号码的字母组合 二进制手表 组合总数 活字印刷 岛屿的最大面积 题目链接&#xff1a;leetcode-695.岛屿的最大面积 示例 输入&#xff1a;grid [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,…

线程“八锁“ synchronized到底是对哪个对象加锁?

线程"八锁" synchronized到底是对哪个对象加锁? 习题一 class Number{public synchronized void a(){System.out.println("1");}public synchronized void b(){System.out.println("2");} } public class TestBlock {public static void main(…

从Zemax OpticStudio导入光学系统

摘要 ZemaxOpticStudio是一款广泛使用的光线追迹软件。VirtualLab Fusion可以从Zemax OpticStudio导入光学系统&#xff0c;包括完整3D位置信息和镜片玻璃。导入后&#xff0c;光学系统的结构数据将显示为单独的表面或可以组合成VirtualLab Fusion中的组件。VirtualLab Fusion可…

docker入门(一):在centOS虚拟机上安装docker

索引CentOS虚拟机安装1.下载CentOS镜像问题1-报错“您已输入用户名&#xff0c;客户机操作系统将保留此用户名”2.根据docker官方指导进行安装1.卸载旧版本&#xff08;初次安装可以忽略&#xff09;2.确保能联网后下载前置软件包3.设置镜像库&#xff08;阿里版&#xff09;4.…

CLIP后续--LSeg,GroupViT,ViLD

这个博客开了有两个月&#xff0c;一直没写成&#xff0c;最近封寝给它完成~躺平第三天 CLIP应用领域概览&#xff1a; 1. LSeg 原论文地址&#xff1a;https://arxiv.org/abs/2201.03546 代码&#xff1a;https://github.com/isl-org/lang-seg 这个图就很清楚的说明了zero…

mysql数据库管理

目录 一、MySQL数据库管理 1、库和表 2、常用的数据类型 3、char和varchar区别 二、查看数据库结构 三、SQL语句 1、SQL语句分类&#xff1a; 四、创建及删除数据库和表 五、管理表中的数据记录 六、修改表名和表结构 七、自增 八、填充 九、克隆表 十、清空表&am…

信号与系统1——Signals and Systems

信号与系统1——Signals and Systems一、Introduction1. Signals and Systems信号与系统(1) Signal信号(2) System系统2. Classification of Signals信号的分类(1) Continuous-time & discrete-time1) Continuous-Time signal连续时间信号2) Discrete-Time signal离散时间信…

【Hack The Box】linux练习-- Passage

HTB 学习笔记 【Hack The Box】linux练习-- Passage &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年9月7日&#x1f334; &#x1f36…

浅析数据仓库和建模理论

第一章 认识数据仓库 1.1 数据仓库概念 数据仓库&#xff0c;英文名称为 Data Warehouse&#xff0c;可简写为 DW 或 DWH。数据仓库&#xff0c;是为企业所有级别的决策制定过程&#xff0c;提供所有类型数据支持的战略集合。它是单个数据存储&#xff0c;出于分析性报告和决…

BDD - SpecFlow SpecRun Web UI 多浏览器测试

BDD - SpecFlow & SpecRun 一个 Cases 匹配多个浏览器引言方案SpecFlow Runner profiles实现被测 Web Application创建一个 Class Libary 项目添加 NuGet PackagesSpecFlow & SpecRun 包添加 Selenium包其它包创建 Feature 文件配置 Default.srprofileDefault.srprofil…

MySQL的概念

MySQL的概念一.数据库的基本概念1、数据&#xff08;Data&#xff09;2、表3、数据库4、数据库管理系统&#xff08;DBMS&#xff09;4.1 关系数据库4.2 非关系型数据库 NoSQL5、数据库系统6、访问数据库的流程二.数据库系统发展史1.第一代数据库2.第二代数据库3.第三代数据库三…

JAVA多线程(MultiThread)的各种用法

多线程简单应用 单线程的问题在于&#xff0c;一个线程每次只能处理一个任务&#xff0c;如果这个任务比较耗时&#xff0c;那在这个任务未完成之前&#xff0c;其它操作就会无法响应。 如下示例中&#xff0c;点击了“进度1”后&#xff0c;程序界面就没反应了&#xff0c;强行…

类文件结构和初识一些字节码指令

文章目录类文件的结构为什么要了解字节码指令Class文件结构Java虚拟机规定的类结构魔数版本常量池访问标志类索引、父类索引、接口索引Ⅰ. interfaces_count&#xff08;接口计数器&#xff09;Ⅱ. interfaces[]&#xff08;接口索引集合&#xff09;字段表集合**1. 字段表访问…