找回密码
 加入
搜索
查看: 9842|回复: 16

[GUI管理] [已解决]求助! 窗口內 加日時間 秒數也會跳動 該如何做?

 火.. [复制链接]
发表于 2012-1-21 12:06:17 | 显示全部楼层 |阅读模式
本帖最后由 tcpuuu 于 2012-1-22 17:43 编辑

求助! 窗口內 加日時間  秒數也會跳動  該如何做?
GUICreate('TIME',400,560)       

;--------------------------------------------------------------------------------------------------

$TIM1 = GUICtrlCreateLabel("",1,502,86,18)
GUICtrlSetData($TIM1,'今天是 ' & @YEAR);---------擷取今年日期
$TIM2 = GUICtrlCreateLabel("-",88,500,8,22)
$TIM3= GUICtrlCreateLabel("",100,502,16,18)
GUICtrlSetData($TIM3,@MON);---------擷取月日期
$TIM4 = GUICtrlCreateLabel("-",118,500,8,22)
$TIM5= GUICtrlCreateLabel("",128,502,16,18)
GUICtrlSetData($TIM5,@MDAY);---------擷取日期
$TIM6= GUICtrlCreateLabel("",148,502,48,18)
GUICtrlSetData($TIM6,@WDAY);---------擷取星期
Select
Case GUICtrlRead($TIM6) = 1
GUICtrlSetData($TIM6,'星期日')        
GUICtrlSetColor ($TIM6,0xFF0000)
Case GUICtrlRead($TIM6) = 2
GUICtrlSetData($TIM6,'星期一')        
Case GUICtrlRead($TIM6) = 3
GUICtrlSetData($TIM6,'星期二')        
Case GUICtrlRead($TIM6) = 4
GUICtrlSetData($TIM6,'星期三')        
Case GUICtrlRead($TIM6) = 5
GUICtrlSetData($TIM6,'星期四')        
Case GUICtrlRead($TIM6) = 6
GUICtrlSetData($TIM6,'星期五')        
Case GUICtrlRead($TIM6) = 7
GUICtrlSetData($TIM6,'星期六')        
GUICtrlSetColor ($TIM6,0x008000)
EndSelect

$TIM7 = GUICtrlCreateLabel("",200,502,100,16,0x01)
GUICtrlSetData($TIM7,@HOUR & ":" & @MIN & ":" & @SEC)

For $i = $TIM1 to $TIM7
GUICtrlSetFont($i,12)
Next

GUISetState()

While 1



        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit



EndSwitch
WEnd

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-1-21 12:18:12 | 显示全部楼层
GUICtrlSetData($TIM7,@HOUR & ":" & @MIN & ":" & @SEC)
放循环里才能跳动哈。。
 楼主| 发表于 2012-1-21 12:21:20 | 显示全部楼层
GUICtrlSetData($TIM7,@HOUR & ":" & @MIN & ":" & @SEC)
放循环里才能跳动哈。。
menfan1 发表于 2012-1-21 12:18



   
WHILL 1

WEND

會整個 一閃一閃
发表于 2012-1-21 12:38:50 | 显示全部楼层
WHILL 1

WEND

會整個 一閃一閃
tcpuuu 发表于 2012-1-21 12:21

如果不用太精确的话, 用 AdlibRegister .
如果想比较精确的话请参考帮助文档的 _TicksToTime, 它带了一个例子!
发表于 2012-1-21 12:41:57 | 显示全部楼层
我建议单独开启一个进程去注册AdlibRegister更新秒数,否则在运行其他的函数的时候会卡住不动 直到其他函数运行完毕
 楼主| 发表于 2012-1-21 13:34:02 | 显示全部楼层
回复 5# love5173

請問 LOVE8173  大大
這個怎麼用?
可以說詳細嗎?
发表于 2012-1-21 14:14:11 | 显示全部楼层
回复 6# tcpuuu

http://www.autoitx.com/forum.php ... =%B6%E0%BD%F8%B3%CC  这里是多进程相关的信息,需要自己下
#include "CoProc.au3"

$Pidmsgb = _CoProc("newline")
func newline()

AdlibRegister ( "dataup" [, 时间] )  
endfunc
func  dataup()
更新时间到控件
endfunc
大概是这样的
发表于 2012-1-21 15:19:12 | 显示全部楼层
本帖最后由 love5173 于 2012-1-21 15:20 编辑

回复 6# tcpuuu
写的比较粗糙,这个函数我也不怎么用,用的时候发现不怎么好用,不知道是不是不会用的原因
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_outfile=..\..\789798789.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include "CoProc.au3"

GUICreate('TIME',400,560)       
Global $TIM7,$gi_CoProcParentli
;--------------------------------------------------------------------------------------------------

$TIM1 = GUICtrlCreateLabel("",1,502,86,18)
GUICtrlSetData($TIM1,'今天是' & @YEAR);---------擷取今年日期
$TIM2 = GUICtrlCreateLabel("-",88,500,8,22)
$TIM3= GUICtrlCreateLabel("",100,502,16,18)
GUICtrlSetData($TIM3,@MON);---------擷取月日期
$TIM4 = GUICtrlCreateLabel("-",118,500,8,22)
$TIM5= GUICtrlCreateLabel("",128,502,16,18)
GUICtrlSetData($TIM5,@MDAY);---------擷取日期
$TIM6= GUICtrlCreateLabel("",148,502,48,18)
GUICtrlSetData($TIM6,@WDAY);---------擷取星期
Select
Case GUICtrlRead($TIM6) = 1
GUICtrlSetData($TIM6,'星期日')        
GUICtrlSetColor ($TIM6,0xFF0000)
Case GUICtrlRead($TIM6) = 2
GUICtrlSetData($TIM6,'星期一')        
Case GUICtrlRead($TIM6) = 3
GUICtrlSetData($TIM6,'星期二')        
Case GUICtrlRead($TIM6) = 4
GUICtrlSetData($TIM6,'星期三')        
Case GUICtrlRead($TIM6) = 5
GUICtrlSetData($TIM6,'星期四')        
Case GUICtrlRead($TIM6) = 6
GUICtrlSetData($TIM6,'星期五')        
Case GUICtrlRead($TIM6) = 7
GUICtrlSetData($TIM6,'星期六')        
GUICtrlSetColor ($TIM6,0x008000)
EndSelect

$TIM7 = GUICtrlCreateLabel("",200,502,100,16,0x01)
        GUICtrlSetData($TIM7,@HOUR & ":" & @MIN & ":" & @SEC)
$ch=_CoProc("updata")



For $i = $TIM1 to $TIM7
GUICtrlSetFont($i,12)
Next

GUISetState()

While 1



     $msg = GUIGetMsg()
       Switch $msg
                Case -3
                        
                     Exit



EndSwitch
WEnd

Func updata()
        While 1
        If Not WinExists("TIME","") Then Exit        
        ControlSetText("TIME","","Static7",@HOUR & ":" & @MIN & ":" & @SEC)
        WEnd
EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-1-21 15:19:43 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

;变量必须先声明后使用
Opt("MustDeclareVars", 1)

;创建GUI
Global $gu_Form1 = GUICreate("时间日期", 220, 52, -1, -1)
Global $gu_Label1 = GUICtrlCreateLabel("", 0, 16, 220, 17, $SS_CENTER)

;运行主函数
_Clock_Main()
Exit 1

;程序主函数
Func _Clock_Main()
        ;初始化日期、周几、时间值
        _Clock_RefeshClock()

        ;显示GUI
        GUISetState(@SW_SHOW)

        ;每隔一秒刷新日期、周几、时间值
        AdlibRegister("_Clock_RefeshClock", 1000)

        Local $nMsg
        While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                Exit

                EndSwitch
        WEnd
EndFunc   ;==>_Clock_Main

;刷新日期、周几、时间值
Func _Clock_RefeshClock()
        Local $Data = _Clock_Date() ;获取日期
        Local $Time = _Clock_Time() ;获取时间
        Local $Wday = _Clock_Wday() ;获取周几

        ;显示时钟信息
        GUICtrlSetData($gu_Label1, $Data & " " & $Wday & " " & $Time)
EndFunc   ;==>_Clock_RefeshClock

;获取日期
Func _Clock_Date()
        Return @YEAR & "年" & @MON & "月" & @MDAY & "日"
EndFunc   ;==>_Clock_Date

;获取时间
Func _Clock_Time()
        Return @HOUR & ":" & @MIN & ":" & @SEC
EndFunc   ;==>_Clock_Time

;获取周几
Func _Clock_Wday()
        Local $a_Wday
        ;根据@WDAY的值(1~7)获取“星期x”的值
        Switch @WDAY
                Case 1
                        $a_Wday = "星期天"
                Case 2
                        $a_Wday = "星期一"
                Case 3
                        $a_Wday = "星期二"
                Case 4
                        $a_Wday = "星期三"
                Case 5
                        $a_Wday = "星期四"
                Case 6
                        $a_Wday = "星期五"
                Case 7
                        $a_Wday = "星期六"
        EndSwitch
        Return $a_Wday
EndFunc   ;==>_Clock_Wday

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
tcpuuu + 30 + 5 這個寫的非常棒

查看全部评分

发表于 2012-1-21 15:28:08 | 显示全部楼层
回复 9# 零度深蓝
功能上没有错误,只是怕楼主要加一些其他的函数,会把这个函数卡主的,以前我以为这个东西可以模拟多线程的,可以后来我知道我错了
 楼主| 发表于 2012-1-21 16:33:07 | 显示全部楼层
Switch @WDAY
                Case 1
                        $a_Wday = "星期天"
                Case 2
                        $a_Wday = "星期一"
                Case 3
                        $a_Wday = "星期二"
                Case 4
                        $a_Wday = "星期三"
                Case 5
                        $a_Wday = "星期四"
                Case 6
                        $a_Wday = "星期五"
                Case 7
                        $a_Wday = "星期六"
        EndSwitch
        Return $a_Wday
-------------------------------------------------------------------------------

以上這段   如果星期六  要變綠色的
                     星期日  要變紅色的   怎麼改?
发表于 2012-1-21 20:44:24 | 显示全部楼层
为一个时间就是加多一个线程?感觉1秒刷新一次差不多了。。
除了网络问题,一般功能 或函数都可以在1秒内完全
发表于 2012-1-21 23:43:06 | 显示全部楼层
AdlibRegister用这个是最好的!不影响主程序的消息循环!
发表于 2012-1-22 12:04:05 | 显示全部楼层
噢,又学会了一样。
发表于 2012-1-25 18:20:14 | 显示全部楼层
噢,又学会了一样。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-1 07:34 , Processed in 0.087741 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表