Skip to content

SiLabel.py

IceF != 0 edited this page Jun 26, 2024 · 5 revisions

SiLabel.py 提供了比 QLabel 更加强大的标签类型:SiLabel SiPixLabel SiDraggableLabel

SiLabel

基本信息

  • 继承自 QLabel

  • 方法:
    activate()
    deactivate()
    hasMoveLimits() > bool
    isActive() > bool
    moveTo(int, int)
    removeMoveLimits()
    setAutoAdjustSize(bool)
    setHint(str)
    setInstantMove(bool)
    setMoveLimits(int, int, int, int)
    setText(str)

  • 信号:
    moved > [int, int]

activate()

尝试启动移动动画

deactivate()

停止移动动画

hasMoveLimits()

返回该 SiLabel 是否具有移动位置限制

isActive()

返回动画是否正在进行

moveTo(int, int)

尝试使用移动动画来移动控件

  • moveTo 方法被调用时,如果立即移动策略为否,则会将传入值设为动画的目标值,并调用 self.activate 方法
    如果立即移动策略被启用,那么会直接调用 self.move,实现立即移动

removeMoveLimits()

移除移动位置限制(如果有)

setAutoAdjustSize(bool)

设置自动调节尺寸

  • 这会使每次调用 self.setText 后调用 self.adjustSize,如果你继承 SiLabel 构建新类,可以通过重写 adjustSize 方法以实现某些功能

setHint(str)

设置提示栏文字

setInstantMove(bool)

设置立即移动策略

setMoveLimits(int, int, int, int)

设置移动限制

  • moveTo 方法被调用时,它会将传入值 (x, y) 传入内部函数 _legalizeMovingTarget(x, y) 以获得合法的移动位置,从而保证控件在移动范围内移动,设置移动范围需要 setMoveLimits 方法来实现,传入值 (x1, y1, x2, y2) 中前两者是左上角坐标,后两者是右下角坐标
  • 需要强调的是,setMoveLimits 已经考虑了控件的长和宽,这已经保证了控件的任何部分不超出规定的矩形范围

setText(str)

改变控件文字