17. 液晶显示控件
一、液晶显示控件
液晶显示控件 QLCDNumber 用来显示数字和一些特殊符号,常用来显示数值、日期和时间。可以显示的数字和符号有 0/O、1、2、3、4、5/S、6、7、8、9/g、减号、小数点、A、B、C、D、E、F、h、H、L、o、P、r、u、U、Y、冒号、度数(在字符串中用单引号表示)和空格。QLCDNumber 将非法字符替换为空格。
我们可以在终端中使用 pip 安装 PySide6 模块。默认是从国外的主站上下载,因此,我们可能会遇到网络不好的情况导致下载失败。我们可以在 pip 指令后通过 -i 指定国内镜像源下载。
pip install pyside6 -i https://mirrors.aliyun.com/pypi/simple
国内常用的 pip 下载源列表:
- 阿里云 https://mirrors.aliyun.com/pypi/simple
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple
用 QLCDNumber 类创建实例对象的方法如下所示:
QLCDNumber(parent:QWidget=None)
QLCDNumber(numDigits:int, parent:QWidget=None)
其中 parent 是控件所在的 窗体 或 容器 控件,numDigits 是能 显示的数字个数。QLCDNumber 是从 QFrame 类继承而来的。
液晶显示控件的常用方法如下:
# 实例方法
setDigitCount(nDigits:int) -> None # 设置可以显示的数字个数
digitCount() -> int # 获取可以显示的数字个数
setSegmentStyle(arg__1:QLCDNumber.SegmentStyle) -> None # 设置外观显示样式
checkOverflow(num:int) -> bool # 检查整数是否溢出
checkOverflow(num:float) -> bool # 检查浮点数是否溢出
intValue() -> int # 按四舍五入的规则返回整数值,若显示的不是数字,则返回0
value() -> float # 返回浮点数值
setMode(arg__1:QLCDNumber.Mode) -> None # 设置数字的显示模式
# 槽方法
display(string:str) -> None # 显示字符串
display(num:int) -> None # 显示整数
display(num:float) -> None # 显示浮点数
setBinMode() -> None # 转成二进制显示模式
setOctMode() -> None # 转成八进制显示模式
setDecMode() -> None # 转成十进制显示模式
setHexMode() -> None # 转成十六进制显示模式
setSmallDecimalPoint(arg__1:bool) -> None # 设置小数点的显示是否占用一位
液晶显示控件 QLCDNumber 只有一个信号 overflow(),当 显示的整数部分长度超过了允许的最大数字个数时发送信号。
overflow() # 超过了允许的最大数字个数时发送信号
用 setDigitCount(count:int)方法 设置液晶显示控件的最大显示数字个数,包括小数点,如果显示的整数部分长度超过了允许的最大数字个数,则会产生溢出,溢出时会发送 overflow() 信号。可以用 checkOverflow(number:float) 和 checkOverflow(number:int) 方法 检查浮点数和整数值是否会溢出。
如果显示的是整数,可以用 setMode(mode:QLCDNumber.Mode) 方法 将整数转换成二进制、八进制和十六进制显示,其中参数 mode 是 QLCDNumber.Mode 类型的枚举值,可以取值如下:
QLCDNumber.Mode.Bin # 二进制
QLCDNumber.Mode.Oct # 八进制
QLCDNumber.Mode.Dec # 十进制
QLCDNumber.Mode.Hex # 十六进制
用 setSegmentStyle(style:QLCDNumber.SegmentStyle) 方法可以 设置液晶显示器的外观,其中参数 style 是 QLCDNumber.SegmentStyle 类型的枚举值,可以取值如下:
QLCDNumber.SegmentStyle.Outline # 用背景色显示数字,只显示数字的轮廓
QLCDNumber.SegmentStyle.Filled # 用窗口的文字颜色显示文字
QLCDNumber.SegmentStyle.Flat # 平面,没有凸起效果
我们新建一个 ui.py 文件,用来存放 UI 相关的代码。
from PySide6.QtWidgets import QWidget
from PySide6.QtWidgets import QLCDNumber
class MyUi:
def setupUi(self, window:QWidget):
window.resize(100, 60) # 1.设置窗口对象大小
self.lcdNumber = QLCDNumber(window) # 2.创建液晶显示控件控件
self.lcdNumber.resize(50, 50) # 3.设置液晶显示控件控件的大小
self.lcdNumber.setDigitCount(2) # 4.设置可以显示的数字个数
self.lcdNumber.setSegmentStyle(QLCDNumber.SegmentStyle.Flat) # 5.设置外观显示样式
self.lcdNumber.setHexMode() # 6.设置显示模式为16进制
我们新建一个 widget.py 文件,用来存放业务逻辑相关的代码。
import sys
from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtCore import QTimer
from ui import MyUi
class MyWidget(QWidget):
def __init__(self):
super().__init__() # 1.调用父类Qwidget类的__init__()方法
self.__ui = MyUi()
self.__ui.setupUi(self) # 2.初始化页面
self.timer = QTimer(self) # 3.创建定时器
self.timer.start(1000) # 4.启动定时器,并设置定时器间隔
self.timer.timeout.connect(self.show_num_lcdNumber) # 5.关联定时器定时时间到触发信号
def show_num_lcdNumber(self):
value = (self.__ui.lcdNumber.intValue() + 1) % 256
self.__ui.lcdNumber.display(value)
if value >= 256:
self.timer.stop()
self.__ui.lcdNumber.display(0)
if __name__ == "__main__":
app = QApplication(sys.argv) # 1.创建一个QApplication类的实例
window = MyWidget() # 2.创建一个窗口
window.show() # 3.显示窗口
sys.exit(app.exec()) # 4.进入程序的主循环,并通过exit函数确保主循环安全结束

浙公网安备 33010602011771号