PyQt5—QLCDNumber 学习笔记

第二章 控件学习


        QLCDNumber 是 PyQt5 中用于显示类似 LCD 数字效果的控件,适合用于显示数字时钟、计算器或测量仪表等场景。下面从基础开始,带你一步步掌握 QLCDNumber 的使用。

1. 基础显示功能

让我们从最基本的例子开始,创建一个显示数字的 LCD 控件:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QVBoxLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('基础LCD显示')

# 创建LCD控件,设置显示位数为5
lcd = QLCDNumber(5)
# 设置显示数字
lcd.display(12345)

layout = QVBoxLayout()
layout.addWidget(lcd)
window.setLayout(layout)

window.show()
sys.exit(app.exec_())

PyQt5—QLCDNumber 学习笔记_第1张图片

代码解读:

  • QLCDNumber(5) 创建了一个最多能显示 5 位数字的 LCD 控件
  • display() 方法用于设置要显示的内容,可以是数字或字符串
  • 这里显示的是整数,实际上也可以显示浮点数、二进制、八进制或十六进制数

2. 显示不同进制的数字

LCD 控件可以显示多种进制的数字:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QVBoxLayout, QHBoxLayout, QPushButton

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('进制显示示例')

lcd = QLCDNumber(8)  # 8位显示

# 创建按钮用于切换进制
btn_decimal = QPushButton('十进制')
btn_binary = QPushButton('二进制')
btn_octal = QPushButton('八进制')
btn_hex = QPushButton('十六进制')

# 按钮点击事件处理函数
def set_decimal():
    lcd.setMode(QLCDNumber.Dec)  # 设置为十进制模式
    lcd.display(255)

def set_binary():
    lcd.setMode(QLCDNumber.Bin)  # 设置为二进制模式
    lcd.display(255)

def set_octal():
    lcd.setMode(QLCDNumber.Oct)  # 设置为八进制模式
    lcd.display(255)

def set_hex():
    lcd.setMode(QLCDNumber.Hex)  # 设置为十六进制模式
    lcd.display(255)

# 连接按钮信号到槽函数
btn_decimal.clicked.connect(set_decimal)
btn_binary.clicked.connect(set_binary)
btn_octal.clicked.connect(set_octal)
btn_hex.clicked.connect(set_hex)

# 布局设置
button_layout = QHBoxLayout()
button_layout.addWidget(btn_decimal)
button_layout.addWidget(btn_binary)
button_layout.addWidget(btn_octal)
button_layout.addWidget(btn_hex)

main_layout = QVBoxLayout()
main_layout.addWidget(lcd)
main_layout.addLayout(button_layout)

window.setLayout(main_layout)
window.show()
sys.exit(app.exec_())

PyQt5—QLCDNumber 学习笔记_第2张图片

代码解读:

  • setMode() 方法用于设置显示模式,支持四种模式:
    • QLCDNumber.Dec(十进制,默认)
    • QLCDNumber.Bin(二进制)
    • QLCDNumber.Oct(八进制)
    • QLCDNumber.Hex(十六进制)
  • 无论设置哪种进制,display() 方法都接受十进制数作为参数,控件会自动转换为对应进制显示

3. 显示小数点和负号

LCD 控件可以显示小数点和负号:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QVBoxLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('小数和负数显示')

# 创建两个LCD控件,分别显示小数和负数
lcd_float = QLCDNumber(8)
lcd_float.setSegmentStyle(QLCDNumber.Filled)  # 设置填充样式

lcd_negative = QLCDNumber(8)
lcd_negative.setSegmentStyle(QLCDNumber.Flat)  # 设置扁平样式

# 显示浮点数
lcd_float.display(-3.1415)

# 显示负数
lcd_negative.display(-9876)

layout = QVBoxLayout()
layout.addWidget(lcd_float)
layout.addWidget(lcd_negative)
window.setLayout(layout)

window.show()
sys.exit(app.exec_())

PyQt5—QLCDNumber 学习笔记_第3张图片

代码解读:

  • 浮点数会自动显示小数点,位数根据实际需要显示
  • 负数会自动显示负号
  • setSegmentStyle() 方法设置数码管的显示样式:
    • QLCDNumber.Outline(轮廓样式,默认)
    • QLCDNumber.Filled(填充样式)
    • QLCDNumber.Flat(扁平样式)

4. 实时更新显示内容

下面是一个实时更新 LCD 显示的例子,模拟一个简单的秒表:

import sys
import time
from PyQt5.QtWidgets import  QLCDNumber, QVBoxLayout, QPushButton
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout
from PyQt5.QtCore import QTimer

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('简易秒表')

lcd = QLCDNumber(8)
lcd.setSegmentStyle(QLCDNumber.Filled)

# 初始化时间和计时器
time_elapsed = 0  # 已过去的时间(秒)
timer = QTimer()

# 开始/暂停按钮
btn_start_stop = QPushButton('开始')
btn_reset = QPushButton('重置')

# 计时器超时处理函数
def update_time():
    global time_elapsed
    time_elapsed += 1
    # 格式化时间为 HH:MM:SS
    hours = time_elapsed // 3600
    minutes = (time_elapsed % 3600) // 60
    seconds = time_elapsed % 60
    time_str = f"{hours:02d}:{minutes:02d}:{seconds:02d}"
    lcd.display(time_str)

# 开始/暂停按钮点击处理
def toggle_timer():
    if timer.isActive():
        timer.stop()
        btn_start_stop.setText('开始')
    else:
        timer.start(1000)  # 每秒触发一次
        btn_start_stop.setText('暂停')

# 重置按钮点击处理
def reset_timer():
    global time_elapsed
    timer.stop()
    time_elapsed = 0
    lcd.display("00:00:00")
    btn_start_stop.setText('开始')

# 连接信号和槽
timer.timeout.connect(update_time)
btn_start_stop.clicked.connect(toggle_timer)
btn_reset.clicked.connect(reset_timer)

# 初始化显示
lcd.display("00:00:00")

# 布局设置
button_layout = QVBoxLayout()
button_layout.addWidget(btn_start_stop)
button_layout.addWidget(btn_reset)

main_layout = QHBoxLayout()
main_layout.addWidget(lcd)
main_layout.addLayout(button_layout)

window.setLayout(main_layout)
window.show()
sys.exit(app.exec_())

PyQt5—QLCDNumber 学习笔记_第4张图片

代码解读:

  • 使用QTimer实现定时更新显示内容
  • 通过timer.start(1000)设置每秒触发一次更新
  • 显示内容可以是格式化的字符串,不局限于纯数字
  • 可以通过setDigitCount()方法调整显示位数

5. 自定义显示样式

可以通过设置字体、颜色等属性来自定义 LCD 控件的显示效果:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QVBoxLayout, QComboBox
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('自定义LCD显示')

lcd = QLCDNumber(5)
lcd.setSegmentStyle(QLCDNumber.Filled)
lcd.setProperty("intValue", 12345)

# 设置字体
font = QFont()
font.setFamily("Arial")
font.setPointSize(24)
font.setBold(True)
lcd.setFont(font)

# 设置文本颜色
lcd.setStyleSheet("QLCDNumber { color: red; background-color: black; }")

# 创建下拉框用于选择不同的数字
combo = QComboBox()
for i in range(10000, 10010):
    combo.addItem(str(i))

# 当下拉框选择变化时更新LCD显示
def update_display():
    lcd.display(combo.currentText())

combo.currentIndexChanged.connect(update_display)

# 初始化显示
lcd.display(combo.currentText())

layout = QVBoxLayout()
layout.addWidget(lcd)
layout.addWidget(combo)
window.setLayout(layout)

window.show()
sys.exit(app.exec_())

PyQt5—QLCDNumber 学习笔记_第5张图片

代码解读:

  • 通过setFont()方法设置显示字体
  • 使用setStyleSheet()方法设置样式表,可以自定义文本颜色和背景颜色
  • 样式表中的color属性设置文本颜色,background-color设置背景颜色

QLCDNumber 常用方法总结

方法 描述
display(value) 设置要显示的内容,可以是数字(整数或浮点数)或字符串
setMode(mode) 设置显示模式:Dec(十进制)、Bin(二进制)、Oct(八进制)、Hex(十六进制)
setSegmentStyle(style) 设置数码管样式:Outline(轮廓)、Filled(填充)、Flat(扁平)
setDigitCount(count) 设置显示的最大位数
setSmallDecimalPoint(flag) 设置是否使用小小数点(默认为 False)
setFont(font) 设置显示字体
setStyleSheet(style) 设置样式表,可以自定义文本颜色、背景颜色等

QLCDNumber 常用信号

信号 描述
overflow() 当显示的值超出了控件所能显示的范围时发出此信号

        这个控件虽然功能相对简单,但在需要显示数字的应用场景中非常实用,比如时钟、计算器、测量设备等界面。

你可能感兴趣的:(Python——PyQt5笔记,学习,笔记,python,开发语言)