Prozent Uhr - Mal eine ganz andere Uhr

  • Ich habe eine kleine Uhr gebastelt die einem genau anzeigt wie viel von der Minute bis zum Jahr schon rum sind, und zwar in %.
    Viel mehr hab ich dazu eigentlich nicht zu sagen :)
    Schaut es euch einfach mal an und probiert sie aus.

    Bekannte Bugs

    Die Pfeiltasten im Datepicker verschwinden sobald man den Alarm aktiviert.

    ToDo

    Weiß noch nicht, helft mir mal =)

    Screenshot
    Kurzanleitung

    Aktivieren/Deaktivieren: Aktiviert oder Deaktiviert den Pizzatimer

    Stop: Wenn der Alarm ausgelöst wurde, kann man damit die Mp3 stoppen.

    MP3: Öffnet ein Filedialog in dem man seinen Alarmton wählen kann.

    Uhr-Auswahl: Bezieht sich immer auf das Datum von heute. (Es soll ja in dem Sinne auch kein Wecker sein sondern mehr ein Pizzatimer)


    Weiterhin gillt folgendes.
    Über Feedback würde ich mich natürlich freuen. Verbesserungsvorschläge sowie Erweiterungsvorschläge sind auch gerne gesehen.

  • Nicht schlecht :thumbup: . Aber wenn du es so machst, flackert es nicht mehr ;).

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Prozent.ico
    #AutoIt3Wrapper_outfile=ProzentUhr.exe
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $titel = "Prozent Uhr 0.1 - by Douky"
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate($titel, 307, 296, 228, 196)
    $Group_zeit = GUICtrlCreateGroup("Group_zeit", 8, 128, 289, 161)
    GUICtrlSetFont(-1, 8, 800, 0, "Comic Sans MS")
    $Progress_Sekunde = GUICtrlCreateProgress(12, 266, 278, 17)
    $Progress_Minute = GUICtrlCreateProgress(12, 218, 278, 17)
    $Progress_Stunde = GUICtrlCreateProgress(12, 170, 278, 17)
    $Label1 = GUICtrlCreateLabel("Sekunde", 14, 241, 272, 20)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Minute", 14, 194, 277, 20)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Stunde", 13, 145, 272, 24)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group_datum = GUICtrlCreateGroup("Group_datum", 8, 0, 289, 121)
    GUICtrlSetFont(-1, 8, 800, 0, "Comic Sans MS")
    $Progress_Monat = GUICtrlCreateProgress(14, 91, 278, 17)
    $Label_Monat = GUICtrlCreateLabel("Monat", 15, 68, 272, 20)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Progress_Jahr = GUICtrlCreateProgress(13, 45, 278, 17)
    $Label_Jahr = GUICtrlCreateLabel("Jahr", 14, 22, 280, 20)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;WinSetTrans($titel, "", 125)

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_uhrrefresh", 250)

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _uhrrefresh()
    If _DateIsLeapYear(@YEAR) Then
    $Jahr_in_Sekunden = 31622400
    Else
    $Jahr_in_Sekunden = 31536000
    EndIf
    _GUICtrlSetData($Group_zeit, "Es ist " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr")
    _GUICtrlSetData($Group_datum, "Heute ist der " & @MDAY & "." & @MON & "." & @YEAR)

    [/autoit] [autoit][/autoit] [autoit]

    $Zahl = 100 / $Jahr_in_Sekunden * _DateDiff('s', @YEAR & "/01/01 00:00:00", _NowCalc())
    _GUICtrlSetData($Progress_Jahr, $Zahl)
    _GUICtrlSetData($Label_Jahr, "Jahr" & @TAB & "(" & StringFormat("%.5f", $Zahl) & '%' & ")")

    [/autoit] [autoit][/autoit] [autoit]

    $Monatprozent = 100 / (_DateDaysInMonth(@YEAR, @MON) * 24 * 60 * 60) * _DateDiff('s', @YEAR & "/" & @MON & "/01 00:00:00", _NowCalc())
    _GUICtrlSetData($Progress_Monat, $Monatprozent)
    _GUICtrlSetData($Label_Monat, "Monat" & @TAB & "(" & StringFormat("%.5f", $Monatprozent) & '%' & ")")

    [/autoit] [autoit][/autoit] [autoit]

    $Tagprozent = 100 / 86400 * (@HOUR * 60 * 60 + @MIN * 60 + @SEC)
    _GUICtrlSetData($Progress_Stunde, $Tagprozent)
    _GUICtrlSetData($Label3, "Tag" & @TAB & "(" & StringFormat("%.5f", $Tagprozent) & '%' & ")")

    [/autoit] [autoit][/autoit] [autoit]

    ;Stunde
    $Stundenprozent = 100 / 3600 * (@MIN * 60 + @SEC)
    _GUICtrlSetData($Progress_Minute, $Stundenprozent)
    _GUICtrlSetData($Label2, "Stunde" & @TAB & "(" & StringFormat("%.5f", $Stundenprozent) & '%' & ")")
    ;Stunde Ende

    [/autoit] [autoit][/autoit] [autoit]

    ;Minuten
    $Minutenprozent = 100 / 60 * @SEC
    _GUICtrlSetData($Progress_Sekunde, $Minutenprozent)
    _GUICtrlSetData($Label1, "Minute" & @TAB & "(" & StringFormat("%.5f", $Minutenprozent) & '%' & ")")
    ;Minuten Ende
    EndFunc ;==>_uhrrefresh

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlSetData($cID, $vData)
    If GUICtrlRead($cID) <> $vData Then GUICtrlSetData($cID, $vData)
    EndFunc

    [/autoit]
  • Nett, hab auch mal eine gebastelt, der Code ist vielleicht etwas anschaulicher :):
    //EDIT: Basiert auf einer Idee aus diesem Forum

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>
    #include <GUIListBox.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <string.au3>
    #include <date.au3>
    #include <IE.au3>
    #include <Array.au3>
    #include <File.au3>
    #NoTrayIcon
    HotKeySet("q", "eexit")
    if @MON = 1 Then $mdays = 31
    if @MON = 2 Then $mdays = 28
    if @MON = 3 Then $mdays = 31
    if @MON = 4 Then $mdays = 30
    if @MON = 5 Then $mdays = 30
    if @MON = 6 Then $mdays = 30
    if @MON = 7 Then $mdays = 31
    if @MON = 8 Then $mdays = 29
    if @MON = 9 Then $mdays = 30
    if @MON = 10 Then $mdays = 31
    if @MON = 11 Then $mdays = 30
    if @MON = 12 Then $mdays = 31
    $monatkonstat = 100/$mdays
    $daykonstat = 100/24
    $stundekonstat = 100/60
    $minutekonstat = 100/60
    $sekundekonstat = 100/60

    [/autoit] [autoit][/autoit] [autoit]

    $main = GUICreate("Anti-LW Uhr", 375, 290)
    GUISetBkColor(0x000000)
    $jahr = GUICtrlCreateProgress(50, 10, 200, 30)
    $monat = GUICtrlCreateProgress(50, 50, 200, 30)
    $tag = GUICtrlCreateProgress(50, 90, 200, 30)
    $stunde = GUICtrlCreateProgress(50, 130, 200, 30)
    $minute = GUICtrlCreateProgress(50, 170, 200, 30, $PBS_smooth)
    ;beschriftungs labels
    GUICtrlCreateLabel("Jahr",10,17)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlCreateLabel("Monat",10,57)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlCreateLabel("Tag",10,97)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlCreateLabel("Stunde",10,137,39)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlCreateLabel("Minute",10,177)
    GUICtrlSetColor(-1, 0x00FF00)
    $jahrl = GUICtrlCreateLabel("00,00%",260,17,150)
    GUICtrlSetColor(-1, 0x00FF00)
    $monatl = GUICtrlCreateLabel("00,00%",260,57, 150)
    GUICtrlSetColor(-1, 0x00FF00)
    $tagl = GUICtrlCreateLabel("00,00%",260,97,150)
    GUICtrlSetColor(-1, 0x00FF00)
    $stundel = GUICtrlCreateLabel("00,00%",260,137,150)
    GUICtrlSetColor(-1, 0x00FF00)
    $minutel = GUICtrlCreateLabel("00,00%",260,177,150)
    GUICtrlSetColor(-1, 0x00FF00)
    $msekundel = GUICtrlCreateLabel(@mSEC,65,217,257, 75)
    GUICtrlSetColor(-1, 0x00FF00)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $sec = 98
    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    if $sec <> @SEC Then
    GUICtrlSetData($jahr,@YDAY*(100/365))
    GUICtrlSetData($monat,@MDAY*$monatkonstat)
    GUICtrlSetData($tag,@HOUR*$daykonstat)
    GUICtrlSetData($stunde,@sec/60*100/60)
    GUICtrlSetData($minute,@SEC*$minutekonstat)
    GUICtrlSetData($jahrl,@YDAY*(100/365) & " %")
    GUICtrlSetData($monatl,@MDAY*$monatkonstat & " %")
    GUICtrlSetData($tagl,@HOUR*$daykonstat & " %")
    GUICtrlSetData($stundel,@MIN*$stundekonstat & " %")
    GUICtrlSetData($minutel,@SEC*$minutekonstat & " %")
    GUICtrlSetData($msekundel, @HOUR&":"&@MIN&":"&@SEC)
    GUICtrlSetFont($msekundel, 45)
    $sec = @SEC
    EndIf

    If GUICtrlRead($jahrl) = "0%" Then
    SoundPlay("C:\WINDOWS\Media\tada.wav")
    MsgBox(64, "SILVERSTER!", "Schönes neues Jahr!")
    EndIf


    WEnd

    Func eexit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _atom()
    $main_window = GUICreate("atomuhr", @DesktopWidth - 14, @DesktopHeight - 66, 0, 0, $WS_CAPTION + $WS_SYSMENU + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_CLIPSIBLINGS + $WS_MAXIMIZE)
    $label1 = GUICtrlCreateLabel("", 0, 0, 1, 1)
    $label2 = GUICtrlCreateLabel("", 0, 0, 1, 1)
    $oIE1 = _IECreateEmbedded()
    $GUIActiveX = GUICtrlCreateObj($oIE1, 0, 30, @DesktopWidth - 14, @DesktopHeight - 66)
    _IENavigate($oIE1,"http://www.uhrzeit.org/atomuhr.html")
    $time = _IEBodyReadText($oIE1)
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Montag, ")
    if @error Then
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Dienstag, ")
    if @error Then
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Mittwoch, ")
    if @error Then
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Donnerstag, ")
    if @error Then
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Freitag, ")
    if @error Then
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Samstag, ")
    if @error Then
    $zeit = _StringBetween($time,"Die genaue Uhrzeit aus der Atomuhr"& @crlf &""& @crlf,@crlf &"Sonntag, ")
    if @error Then
    MsgBox(0,"","Anti-LW Uhr konnte ihre Uhr nicht auf Atomzeit trimmen, da Sie keine Internetverbindung haben!")
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    $set = StringSplit($zeit[0],":")
    _SetTime($set[1],$set[2],$set[3])
    GUIDelete($main_window)
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Das flackern bekommst Du in den Griff, wenn Du die jeweilige Anzeige nur dann änderst, wenn sich auch der Wert ändert (bisherigen Wert in einer Variablen speichern und dann mit dem neuen Wert vergleichen).
    Die Prozentwerte solltest Du auch auf ein oder zwei Stellen nach dem Komma runden.

    Ansonsten: schönes Skript! :thumbup:

  • name22 vielen dank für den Tipp. Wenn ich darf, würde ich das gerne so übernehmen.

    @campweb auch eine nette Variante. Allerdings ist mir das etwas zu ungenau...was machst du z.b. nächstes Jahr wenn der Feb 29 tage hat? dann passt das bei dir schon nicht mehr. Zudem Aktualisiert bei meinem Script selbst das Jahr jede Sekunde. So wie ich das bei dir gesehen habe aktuallisierst du nur die Minute Jede sekunde. Und wenn ich meinem Kollegen in Kanada dein Script senden würde, würd die Uhr um 8 Stunden falsch gehen ;)

    Oscar Habe mir schon gedacht das jemand das mit dem Runden erwähnen würde =) aber das ist beabsichtigt so. Weil z.B. beim Jahr sonst nur selten eine Veränderung sehen kann. Da Aktualisiert sich gerade mal alle 2 Sekunden die 5 stelle hinterm Koma. Aber Minute und Stunde kann ich wohl etwas kürzen, da hast du schon recht.

  • Hi Bert, danke erstmal =)

    Den Fehler bekommst du weil du wolltest das der Wecker um 2 uhr(wenn du willst das er um 2 Uhr mittags klingelt musst du 14:00:00 einstellen) Nachts klingelt. Da es bei dir aber schon 7 Uhr morgens war, liegt der Zeitpunkt in der Vergangenheit.
    Also wie oben schon beschrieben, es ist kein wecker, mehr ein pizzatimer der nicht tag übergreifend funktioniert.

    Hoffentlich versteht man das so wie ich das erkläre :D

  • Hallo douky,

    da hatte ich wohl doch noch nicht ganz ausgeschlafen ich hatte nämlich bei dem Begriff Pizzatimer an einen Timer gedacht der ab dem Zeitpunkt des aktivierens herunterläuft.

    mfg autoBert