提问人:Amitava Karan 提问时间:2/24/2017 更新时间:10/7/2019 访问量:635
AKH 文本未从 settimer 更新
akh text not updating from settimer
问:
我正在尝试从设置的计时器更改文本。它不起作用。这是我正在尝试做的伪代码
Gui, New, , Update Text Demo
gui, add, text, x20 y20 w100 h16 vtimertext, --------
Gui, show, w600 h300
TimePassed = 0
SetTimer, UpdateTime, 3000
gosub UpdateTime
Return
; The following label receives control when the user closes the GUI window.
GuiClose:
{
ExitApp
}
Return
UpdateTime:
{
TimePassed := (TimePassed + 1)
TrayTip, Debug, %TimePassed%
GuiControl,,timertext,%TimePassed%
}
Return
如您所见,当从 settimer 事件调用计时器文本时,它不会更改。
有人可以指出我是否做错了什么。
谢谢。
答:
2赞
Amitava Karan
2/27/2017
#1
我从 4GForce 提交的 AHK Forun 和 Jim U 的 SO 那里得到了答案。我把答案放在下面,以供快速参考。
好吧,GuiControl,,TimerText 没有找到,因为它不是全局 变量。要避免全局,您需要指定 gui 名称。( 它是 还缺少文本命令)希望你不介意,我改了一些 例如删除 TimePassed 变量
Gui MyGui:New, , % "Update Text Demo" Gui MyGui:Add, Text, x20 y20 w100 h16 vTimerText, % "0" Gui MyGui:Show, w600 h300 … GuiControl, MyGui: ,timertext,%TimePassed%
基本上,发生的情况是计时器线程默认使用自己单独的 GUI,而不是来自主线程的 GUI,因此您需要命名主 GUI 并在构建主 GUI 时使用该名称,并在计时器子例程中更新它时使用该名称。
评论
0赞
Synetech
10/7/2019
你确定它有效吗?气泡中的数字会发生变化,但 GUI 中的文本仍然没有变化。 😕
1赞
Synetech
10/7/2019
我修复了答案(您在调用中错过了 gui-name)并添加了解释。GuiControl
评论