in reply to Stylish Tk clock -- oneliner
One-linerification left as an exercise to the reader.#! /usr/bin/perl use strict; use warnings; use Tk; my $pi = 2 * atan2 1, 0; sub clock { my ($c) = @_; my ($h, $m, $s) = (localtime)[2, 1, 0]; $m += $s / 60; $h = 5 * ($h % 12) + $m / 12; draw($h, 3, 50, $c); draw($m, 2, 100, $c); draw($s, 1, 100, $c); } sub ftime { sprintf "%02d:%02d:%02d", (localtime)[2, 1, 0] } sub draw { my ($alpha, $w, $l, $c) = @_; my $my = ($alpha < 15 || $alpha > 45) ? -1 : 1; my $mx = $alpha > 30 ? -1 : 1; $alpha = $alpha * 2 * $pi / 60; my $x = $mx * $l * sin $alpha; my $y = $my * sqrt($l ** 2 - $x ** 2); $x = -$x if $alpha >= $pi; $c->createLine(100, 100, 100 + $x, 100 + $y, -width => $w, (-fill => 'grey') x ($w == 1)); } my $mw = MainWindow->new(-height => 200, -width => 200, -title => ftime()); my $c = $mw->Canvas(-height => 200, -width => 200)->pack; $mw->repeat(1000, sub { $c->delete('all'); clock($c); $mw->configure(-title => ftime()); }); MainLoop();
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Stylish Tk clock -- oneliner
by Tux (Canon) on May 14, 2021 at 08:50 UTC |