文章目录
- 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)
案例:动态进度条
- 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)
- 自定义子线程, 子线程结束,主进程退出???
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)