GUI编程--PyQt5--QLabel

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)  # 达到最大值时 重置为min-1
    pd.setValue(50)
    # 手动弹出
    pd.open(lambda : print("关闭了...."))


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

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

# 是否取消
pd.cancle()  # 取消
pd.wasCancled()

# 自动关闭设置
pd.setAutoReset(True)
pd.setAutoClose(True)  # 达到最大值时  自动关闭窗口

案例:展示动态下载的窗口

def set_ui(self):
    pd = QProgressDialog("下载进度", "取消下载", 0, 100, self)

    # 设置 弹出延时 2s
    pd.setMinimumDuration(2)
    # 设置窗口
    pd.setWindowTitle("进度提示")
    pd.setWindowFlag(Qt.WindowType.Desktop)

    # 设置自动重置
    pd.setAutoReset(True)  # 达到最大值时  重置为min-1
    # 自动关闭窗口
    pd.setAutoClose(True)
    # 设置当前值
    pd.setValue(90)
    # 信号
    pd.canceled.connect(lambda : print("已停止下载..."))

    # 定时器 的槽函数
    def func():
        print("当前值:", pd.value())

        if pd.value() + 1 == pd.maximum() or pd.wasCanceled():
            # 停止定时器
            timer.stop()
        # 每次 + 1
        pd.setValue(pd.value() + 1)
    # 定时器
    timer = QTimer(pd)
    timer.timeout.connect(func)
    # 开始定时器 1s 执行一次
    timer.start(1000)

 
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

laufing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值