autoit的标签控件,用GUICtrlSetData(),更新文本时有闪烁,怎么办?AU3

每更新一下都闪,体验太差,怎么办?有没有解决办法。试了下GUICtrlSetData(控件ID,文本)每次更新都闪,ControlSetText(窗口,窗口文本,控件ID... 每更新一下都闪,体验太差,怎么办?有没有解决办法。
试了下GUICtrlSetData(控件ID,文本)每次更新都闪,ControlSetText (窗口,窗口文本,控件ID,文本)稍微好一点,但是偶而也闪,而且参数中含有本窗口ID,耦合度太大。
求一个更好的函数。。
展开
 我来答
百度网友5311d79
2015-03-23 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3198万
展开全部

对于自己创建的控件,一般都用GUICtrlSetData而不太用ControlSetText。

我这里测试不是每次都闪烁的啊,只是偶尔会闪 (AutoIt版本: 3.3.7.15,Win7 64bit下测试)。


你用 _GUICtrlTab_SetItemText 试试,貌似看上去好些,需要 #include <GuiTab.au3>。

#include <GUIConstantsEx.au3>
#include <GuiTab.au3>

Example()

Func Example()
Local $msg

GUICreate("My GUI Tab")
$tab = GUICtrlCreateTab(10, 10, 200, 100)
$btn = GUICtrlCreateButton("tab1 - pass", 20, 156, 100, 30)
GUISetState()

$tab0 = _GUICtrlTab_InsertItem($tab, 0, "tab0")
$tab1 = _GUICtrlTab_InsertItem($tab, 1, "tab1")

While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg = $btn Then
If GUICtrlRead($btn) == "tab1 - pass" Then
GUICtrlSetData($btn, "tab1 - fail")
_GUICtrlTab_SetItemText($tab, 1, "Pass")
Else
GUICtrlSetData($btn, "tab1 - pass")
_GUICtrlTab_SetItemText($tab, 1, "Fail")
EndIf
EndIf
WEnd
EndFunc   ;==>Example
追问
怎么让我用标签页呢?我想显示label,就是一个时间显示,带秒,所以我是1秒一更新,结果每次都闪,UI体验太差,你写的这个标签倒不是很闪。
_GUICtrlTab_SetItemText只能用在标签控件上啊
追答

你问题就是问的标签控件 >_<

label是静态文本标签,我理解为了分页标签。

#include <GUIConstantsEx.au3>
#Include <Date.au3>

Local $label
Example()

Func Example()
Local $msg
GUICreate("My GUI")
$label = GUICtrlCreateLabel(_Now(), 50, 60, 150, 30)
GUISetState()
AdlibRegister("UpdateTime", 1000)
Do
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
AdlibUnRegister("UpdateTime")
EndFunc   ;==>Example

Func UpdateTime()
GUICtrlSetData($label, _Now())
EndFunc   ;==>UpdateTime


另外,也可参见帮助中 GUICtrlCreateDate 函数的Example4,创建时间控件。获取系统时间更新显示。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式