米/措施不会自动刷新

时间:2019-02-03 03:15:32

标签: rainmeter

我制作了一个小部件,该小部件应该告诉我轮班完成的百分比,但是它不会自动刷新,因此如果我想要当前值,则必须手动刷新皮肤。如何使其自动刷新?

我尝试手动设置Update =,添加了OnUpdateAction和[!Redraw]以及很多其他东西,遗憾的是,由于它们无法使用,所以我没有保存它们,所以现在我不记得了。 (以下代码省略了元数据,xy坐标以及与该问题无关的不相关变量和值,例如字体设置。)

[Rainmeter]
MiddleMouseDownAction=[!WriteKeyValue Variables OffWorkTime1 #OffWorkTime2#][!WriteKeyValue Variables OffWorkTime2 #OffWorkTime3#][!WriteKeyValue Variables OffWorkTime3 #OffWorkTime4#][!WriteKeyValue Variables OffWorkTime4 #OffWorkTime5#][!WriteKeyValue Variables OffWorkTime5 #OffWorkTime1#][!Refresh]
OnUpdateAction=[!UpdateMeasure MeasurePercElaps][!UpdateMeter MeterPercentDisplay][!WriteKeyValue Variables OffWorkTime1 #OffWorkTime1#][!WriteKeyValue Variables OffWorkTime2 #OffWorkTime2#][!WriteKeyValue Variables OffWorkTime3 #OffWorkTime3#][!WriteKeyValue Variables OffWorkTime4 #OffWorkTime4#][!WriteKeyValue Variables OffWorkTime5 #OffWorkTime5#][!Redraw]
LeftMouseDownAction=[!UpdateMeasure MeasurePercElaps][!UpdateMeter MeterPercentDisplay][!Redraw]
Update=200

[Variables]
OffWorkTime1=870
OffWorkTime2=900
OffWorkTime3=990
OffWorkTime4=1140
OffWorkTime5=1260
HR=[MeasureHour]
MN=[MeasureMin]
PElaps=[MeasurePercElaps:0%]

;MEASURES===================

[MeasureHour]
measure=time
format=%H

[MeasureMin]
measure=time
format=%M

[MeasurePercElaps]
measure=calc
formula=(((540 - (#OffWorkTime1# - ((#HR# * 60) + #MN#))) / 540) * 100)
MinValue=0
MaxValue=100

;METERS===================

[MeterBarPercent]
meter=bar
MeasureName=MeasurePercElaps
W=201
h=23
ValueRemainder=100
BarColor=84,165,196,255
BarOrientation=Horizontal
DynamicVariables=1

[MeterPercentDisplay]
meter=string
MeasureName=MeasurePercElaps
AntiAlias=1
NumOfDecimals=1
DynamicVariables=1
Postfix=% COMPLETE

它应该在每个Update周期自动刷新,但是我可以用来刷新显示的值的唯一方法是手动刷新它。刷新时它会提供正确的值,所以我知道公式没有问题,但是由于某种原因它不会自动更新。我放入的LeftMouseDownAction =也不起作用。任何指针你将不胜感激。

〜δelta

1 个答案:

答案 0 :(得分:0)

您需要DynamicVariables=1[MeasurePercElaps])才能继续更新。

以下脚本或多或少是您想要实现的目标,但是我只是使用一个公式来计算1分钟内剩余的秒数,以立即产生效果。

;MEASURES===================

[MeasureHour]
measure=Time
format=%H

[MeasureMin]
measure=Time
format=%M

[MeasureSec]
measure=Time
format=%S

[MeasurePercElaps]
measure=Calc
;formula=(((540 - (#OffWorkTime1# - ((#HR# * 60) + #MN#))) / 540) * 100)
formula=((60.0-[MeasureSec])/60.0)*100.0
MinValue=0
MaxValue=100
DynamicVariables=1

[MeterBarPercent]
meter=Bar
MeasureName=MeasurePercElaps
AntiAlias=1
FontFace=#FontFace#
FontSize=12
SolidColor=47,47,47,255
StringAlign=Left
X=0
Y=0
W=190
H=20
ValueRemainder=100
BarColor=84,165,196,255
BarOrientation=Horizontal
DynamicVariables=1

[MeterPercentDisplay]
meter=String
MeasureName=MeasurePercElaps
AntiAlias=1
FontFace=#FontFace#
FontSize=12
FontColor=255,255,255,255
StringAlign=Left
X=0
Y=0
W=190
AntiAlias=1
NumOfDecimals=1
Postfix=% COMPLETE
DynamicVariables=1

条形表应如下所示:

enter image description here

由于[MeasurePercElaps]现在可以自我更新,因此不再需要LeftMouseDownAction中的[Rainmeter]。如果仍将其放在此处,它将使您无法将皮肤移动到桌面区域中的任何位置,并且将无法打开皮肤的弹出菜单。

如果需要使您的 OffWorkTime 变量在下一次皮肤加载/重新加载时保持不变,则可以保留OnUpdateAction。但是,我不明白这一点,因为您只保存在皮肤会话期间始终不变的变量。这就是!WriteKeyValue爆炸的作用。

另一方面,MiddleMouseDownAction非常多余。