Метры / меры не обновляются автоматически - PullRequest
0 голосов
/ 03 февраля 2019

Я создал виджет, который должен сообщать мне, какой процент моей смены завершен, но он не обновляется автоматически, поэтому, если мне нужно текущее значение, мне нужно вручную обновить скин.Как я могу сделать автообновление?

Я попытался установить 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

Это должно быть автообновление при каждом цикле обновления, но вместо этого толькоЯ могу заставить его обновить отображаемые значения, обновив его вручную.Он дает правильное значение при обновлении, поэтому я знаю, что формулы не являются ошибочными, но по какой-то причине он не обновляется автоматически.LeftMouseDownAction = вещь, которую я вставил туда, тоже не работает.Будем очень благодарны за любые ваши указатели.

~ δelta

1 Ответ

0 голосов
/ 26 мая 2019

Вам нужно 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] больше не нужен.Если вы все еще поместите его туда, он не позволит перемещать обложку в любое место на рабочем столе, и вы не сможете открыть всплывающее меню обложки.

Вы можете оставить OnUpdateAction, если хотите, чтобы переменные OffWorkTime сохранялись при следующей загрузке / перезагрузке скина.Но я не вижу в этом смысла, поскольку вы сохраняете только переменные, которые всегда постоянны во время сеанса скина.Это то, что делает !WriteKeyValue bang.

С другой стороны, MiddleMouseDownAction довольно избыточно.

...