autoit的标签控件,用GUICtrlSetData(),更新文本时有闪烁,怎么办?AU3
每更新一下都闪,体验太差,怎么办?有没有解决办法。试了下GUICtrlSetData(控件ID,文本)每次更新都闪,ControlSetText(窗口,窗口文本,控件ID...
每更新一下都闪,体验太差,怎么办?有没有解决办法。
试了下GUICtrlSetData(控件ID,文本)每次更新都闪,ControlSetText (窗口,窗口文本,控件ID,文本)稍微好一点,但是偶而也闪,而且参数中含有本窗口ID,耦合度太大。
求一个更好的函数。。 展开
试了下GUICtrlSetData(控件ID,文本)每次更新都闪,ControlSetText (窗口,窗口文本,控件ID,文本)稍微好一点,但是偶而也闪,而且参数中含有本窗口ID,耦合度太大。
求一个更好的函数。。 展开
展开全部
对于自己创建的控件,一般都用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,创建时间控件。获取系统时间更新显示。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询