Uhr
Linuxer, bitte mal grad weghören, ihr habt die xclock.
Windows-User, das braucht Ihr: seit Win95 fehlt diese hübsche Systemuhr auf dem Schreibtisch ... hier kriegt ihr sie nachgeliefert! Zeigt permanent pixelgenau die aktuelle Systemzeit aus Sicht des Minitowers dort auf dem Bücherbord. (Nein, den da. Zwischen Karl May und Karl Marx den.)
Beim Start der Uhr sehen Sie das Ziffernblatt oben rechts auf dem Bildschirm. Wenn Sie das Fenster verschieben wollen, doppelklicken Sie zuerst auf das Ziffernblatt, damit die Titelleiste erscheint.
Selbstverständlich ist diese Uhr was ganz besonderes. Denn sie kann ansonsten gar nichts (keine Zwiebeln schneiden, keine Klaviernachhilfe, kein gar nichts). Das soll mir erst mal einer nachmachen. Eingedampft unter 1.5 KB.
Systemvoraussetzungen: Tcl/Tk (ist was anderes als Visual Basic).
#!/usr/bin/tclsh package require Tk canvas .uhr -width 200 -height 200 -highlightthickness 0 wm geometry . +[expr {[winfo screenwidth .]-[winfo reqwidth .]}]+0 pack .uhr bind .uhr <Double-Button-1> { if {[expr {![wm overrideredirect .]}]} { wm overrideredirect . yes # .uhr configure -background SystemBackground } else { wm overrideredirect . no # .uhr configure -background SystemButtonFace } } set PI [expr {asin(1)*2}] set sekundenzeigerlaenge 85 set minutenzeigerlaenge 75 set stundenzeigerlaenge 60 proc drawClock {} { global PI global sekundenzeigerlaenge global minutenzeigerlaenge global stundenzeigerlaenge set aussenradius 95.0 set innenradius 83.0 # Ziffernblatt .uhr create oval 5 5 195 195 -fill white -outline "" # Zeiger .uhr create line 100 100 [expr {100+$stundenzeigerlaenge}] 100 -tag stundenschatten .uhr create line 100 100 100 [expr {100-$minutenzeigerlaenge}] -tag minutenschatten .uhr create line 100 100 100 [expr {100+$sekundenzeigerlaenge}] -tag sekundenschatten .uhr create line 100 100 [expr {100+$stundenzeigerlaenge}] 100 -tag {stundenzeiger zeiger} .uhr create line 100 100 100 [expr {100-$minutenzeigerlaenge}] -tag {minutenzeiger zeiger} .uhr create line 100 100 100 [expr {100+$sekundenzeigerlaenge}] -tag {sekundenzeiger zeiger} .uhr itemconfigure stundenzeiger -width 8 .uhr itemconfigure minutenzeiger -width 4 .uhr itemconfigure sekundenzeiger -width 2 -fill red .uhr itemconfigure stundenschatten -width 8 -fill gray .uhr itemconfigure minutenschatten -width 4 -fill gray .uhr itemconfigure sekundenschatten -width 2 -fill gray # Ziffern for {set i 0} {$i < 60} {incr i} { set r0 [expr {$innenradius + 5}] set r1 [expr {$innenradius +10}] set x0 [expr {sin($PI/30*(30-$i))*$r0+100}] set y0 [expr {cos($PI/30*(30-$i))*$r0+100}] set x1 [expr {sin($PI/30*(30-$i))*$r1+100}] set y1 [expr {cos($PI/30*(30-$i))*$r1+100}] if {[expr {$i%5}]} { } } for {set i 0} {$i < 12} {incr i} { set x [expr {sin($PI/6*(6-$i))*$innenradius+100}] set y [expr {cos($PI/6*(6-$i))*$innenradius+100}] .uhr create text $x $y \ -text [expr {$i ? $i : 12}] \ -font {Helvetica 13 bold} \ -fill #666666 \ -tag ziffer } wm resizable . no no } proc stundenZeigerAuf {std} { global PI global stundenzeigerlaenge set x0 100 set y0 100 set dx [expr {sin ($PI/6*(6-$std))*$stundenzeigerlaenge}] set dy [expr {cos ($PI/6*(6-$std))*$stundenzeigerlaenge}] set x1 [expr {$x0 + $dx}] set y1 [expr {$y0 + $dy}] .uhr coords stundenzeiger $x0 $y0 $x1 $y1 set schattenabstand 3 set x0s [expr {$x0 + $schattenabstand}] set y0s [expr {$y0 + $schattenabstand}] set x1s [expr {$x1 + $schattenabstand}] set y1s [expr {$y1 + $schattenabstand}] .uhr coords stundenschatten $x0s $y0s $x1s $y1s } proc minutenZeigerAuf {min} { global PI global minutenzeigerlaenge set x0 100 set y0 100 set dx [expr {sin ($PI/30*(30-$min))*$minutenzeigerlaenge}] set dy [expr {cos ($PI/30*(30-$min))*$minutenzeigerlaenge}] set x1 [expr {$x0 + $dx}] set y1 [expr {$y0 + $dy}] .uhr coords minutenzeiger $x0 $y0 $x1 $y1 set schattenabstand 4 set x0s [expr {$x0 + $schattenabstand}] set y0s [expr {$y0 + $schattenabstand}] set x1s [expr {$x1 + $schattenabstand}] set y1s [expr {$y1 + $schattenabstand}] .uhr coords minutenschatten $x0s $y0s $x1s $y1s } proc sekundenZeigerAuf {sec} { global PI global sekundenzeigerlaenge set x0 100 set y0 100 set dx [expr {sin ($PI/30*(30-$sec))*$sekundenzeigerlaenge}] set dy [expr {cos ($PI/30*(30-$sec))*$sekundenzeigerlaenge}] set x1 [expr {$x0 + $dx}] set y1 [expr {$y0 + $dy}] .uhr coords sekundenzeiger $x0 $y0 $x1 $y1 set schattenabstand 5 set x0s [expr {$x0 + $schattenabstand}] set y0s [expr {$y0 + $schattenabstand}] set x1s [expr {$x1 + $schattenabstand}] set y1s [expr {$y1 + $schattenabstand}] .uhr coords sekundenschatten $x0s $y0s $x1s $y1s } proc showTime {} { after cancel showTime after 1000 showTime set secs [clock seconds] set l [clock format $secs -format {%H %M %S} ] wm title . [join $l :] set std [lindex $l 0] set min [lindex $l 1] set sec [lindex $l 2] regsub ^0 $std "" std regsub ^0 $min "" min regsub ^0 $sec "" sec set min [expr {$min + 1.0 * $sec/60}] set std [expr {$std + 1.0 * $min/60}] stundenZeigerAuf $std minutenZeigerAuf $min sekundenZeigerAuf $sec } drawClock showTime
Vergnügen!
11.3.2022
<< | Heimatseite | Verzeichnis | Stichworte | Autor | >>