itqijian 发表于 2021-11-13 22:25:15

进度条 闪烁问题求解(已解决)

本帖最后由 itqijian 于 2021-11-16 07:45 编辑

原帖内容 :用 2 个 Label 创建反色文字进度条-『 UDF 函数 』-AUTOIT CN - Powered by Autoit中文论坛 (autoitx.com)

#include '_LabelProgress.au3'

$Form1 = GUICreate('反色文字Label进度条 @afan', 380, 80)
GUISetState()

$aProgress = _LabelProgress_Create(20, 20, 300, 30, '   1.正在解压文件')
$i = 1
Do
      Sleep(200)
      $i += Random(0, 2, 1)
      _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 30
Sleep(2000)
$aProgress = _LabelProgress_Create(20, 20, 300, 30, '  2.开始安装...')
$i = 30
Do
      Sleep(200)
      $i += Random(0, 2, 1)
      _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 80
Sleep(2000)
$aProgress = _LabelProgress_Create(20, 20, 300, 30, '  3.安装完成')
$i = 80
Do
      Sleep(200)
      $i += Random(0, 2, 1)
      _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 101
_LabelProgress_Off($aProgress)
Exit

;在 '1.正在解压文件'完成到 '2.开始安装'切换的时候,百分比背景色进度条会从0%跳到30%,有一秒的闪烁。
;请问怎么能保持'1.正在解压文件'完成后,进度条百分比背景色的基础上30%起步而不闪烁?


afan 发表于 2021-11-13 22:52:30

你这是创建了3次进度条,而不是在一个进度条上修改进度…
#include '_LabelProgress.au3'

$Form1 = GUICreate('反色文字Label进度条 @afan', 380, 80)
GUISetState()

$aProgress = _LabelProgress_Create(20, 20, 300, 30, '  1.正在解压...')
$i = 1
Do
        Sleep(200)
        $i += Random(0, 2, 1)
        _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 30
Sleep(2000)
;~ $aProgress = _LabelProgress_Create(20, 20, 300, 30, '  2.开始安装...')
$i = 30
_LabelProgress_SetText($Form1, $aProgress, '  2.开始安装... ' & $i & '%')
Do
        Sleep(200)
        $i += Random(0, 2, 1)
        _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 80
Sleep(2000)
;~ $aProgress = _LabelProgress_Create(20, 20, 300, 30, '  3.安装完成')
$i = 80
_LabelProgress_SetText($Form1, $aProgress, '  3.完成安装... ' & $i & '%')
Do
        Sleep(200)
        $i += Random(0, 2, 1)
        _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 101
_LabelProgress_Off($aProgress)
Exit

itqijian 发表于 2021-11-14 09:18:46

本帖最后由 itqijian 于 2021-11-14 09:24 编辑

afan 发表于 2021-11-13 22:52
你这是创建了3次进度条,而不是在一个进度条上修改进度…
谢谢 @Afan解决了重0%起步闪烁问题

_LabelProgress_SetText($Form1,"",'  2.开始安装... ' & $i & '%')
新的问题:再新创建的进度条文字只显示第一次进度条文字,没有显示后面创建进度条文字。
是要修改_LabelProgress_SetText 这个自定义函数吗?

afan 发表于 2021-11-14 10:13:00

你的提问帖仅自己可见有何意义

chzj589 发表于 2021-11-14 10:32:35

即然是求解,有必要<此帖仅作者可见>吗?

afan 发表于 2021-11-14 14:00:42

itqijian 发表于 2021-11-14 09:18
谢谢 @Afan解决了重0%起步闪烁问题

_LabelProgress_SetText($Form1,"",'  2.开始安装... ' & $i & ...

建新进度条先 _LabelProgress_Off($aProgress) 删除旧的,不然就换地方创建。重叠到一起…… 不说自明
又或者,同一位置坐标,为何要新建?

itqijian 发表于 2021-11-14 17:29:36

afan 发表于 2021-11-14 14:00
建新进度条先 _LabelProgress_Off($aProgress) 删除旧的,不然就换地方创建。重叠到一起…… 不说自明
...

按照给出的思路,测试后。这是回到原来的闪烁问题上了。 这是一个死循环无解?

yohoboy 发表于 2021-11-16 02:10:52

本帖最后由 yohoboy 于 2021-11-16 02:15 编辑

#include '_LabelProgress.au3'

$Form1 = GUICreate('反色文字Label進度條 @afan', 380, 80)
GUISetState()

$aProgress = _LabelProgress_Create(20, 20, 300, 30, '  1.正在解压...')
$i = 1
Do
      Sleep(100)
      $i += Random(0, 2, 1)
      _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 29
;Sleep(2000)
_LabelProgress_Off($aProgress)

;$aProgress = _LabelProgress_CreateText(20, 20, 300, 30, '  2.开始安装...')
;Sleep(2000)

$i = 30
$aProgress2 = _LabelProgress_Create(20, 20, 300, 30, '  2.开始安装...' )
_LabelProgress_Set($Form1, $aProgress2, '' & $i & '')
Do
    Sleep(100)
    $i += Random(0, 2, 1)
    _LabelProgress_Set($Form1, $aProgress2, $i)
          ;语法:_LabelProgress_Set('窗口句柄或标题', 进度条数组, 进度值)
Until $i >= 79
;Sleep(2000)
_LabelProgress_Off($aProgress)

$i = 80
$aProgress = _LabelProgress_Create(20, 20, 300, 30, '  3.完成安装,寫入參數中...')
_LabelProgress_Set($Form1, $aProgress, '' & $i & '')
Do
      Sleep(100)
      $i += Random(0, 2, 1)
      _LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 100
_LabelProgress_Off($aProgress)
Exit

itqijian 发表于 2021-11-16 07:44:55

本帖最后由 itqijian 于 2021-11-16 07:46 编辑

yohoboy 发表于 2021-11-16 02:10

谢谢帮忙,完美解决。
页: [1]
查看完整版本: 进度条 闪烁问题求解(已解决)