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 下载源列表:

  用 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) 方法 将整数转换成二进制、八进制和十六进制显示,其中参数 modeQLCDNumber.Mode 类型的枚举值,可以取值如下:

QLCDNumber.Mode.Bin                                                             # 二进制
QLCDNumber.Mode.Oct                                                             # 八进制
QLCDNumber.Mode.Dec                                                             # 十进制
QLCDNumber.Mode.Hex                                                             # 十六进制

  用 setSegmentStyle(style:QLCDNumber.SegmentStyle) 方法可以 设置液晶显示器的外观,其中参数 styleQLCDNumber.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函数确保主循环安全结束
posted @ 2025-01-05 21:03  星光映梦  阅读(179)  评论(0)    收藏  举报