💫 デスクトップで動く『へたれ時計』
🕐 はじめに
Pythonとライブコーディングの学習を兼ねて、
ちょっと変わったデスクトップ時計を作ってみました。
その名も――
💚 『へたれ時計』
💡 コンセプト
この時計は、ただの時計ではありません。
針が“重力”に負けて下を向いてしまう
クリックすると数秒だけ復活して立ち上がる
そしてまた、ゆっくりへたれて垂れ下がる
まるで人間のように、頑張ったり、へたれたり。
そんな“感情を持った時計”です。
「へたれてもいい。大切なのは、また立ち上がること。」
⚙️ 開発環境
項目 内容
OS Windows 10 / 11
言語 Python 3.11
GUI Tkinter
画像処理 Pillow(PIL)
効果音 winsound(クリック音)
配布形式 PyInstaller(exe化対応)
🎨 見た目と特徴
背景は丸いガラス風PNG(へたれ様.png)
針はしなりながら重力に従ってへたれる
クリックで一時的に“復活”
上部に緑色ポップ体のデジタル時計
背景透過&右クリックでドラッグ移動可能
💻 コード解説(抜粋)
ここでは、「へたれる動き」を再現する部分を紹介します。
フルコードは後半にまとめています。
🧭 重力で針が垂れ下がる処理
針の角度と速度を更新して、
「重力」「バネのような復元力」「空気抵抗」を再現しています。
for attr in ['hour', 'min', 'sec']:
angle = getattr(self, f"{attr}_angle")
vel = getattr(self, f"{attr}_velocity")
diff = 90 - angle
acc = diff * 0.04 # バネ係数(引き戻す力)
vel += acc
vel *= 0.975 # 減衰(空気抵抗)
angle += vel
setattr(self, f"{attr}_angle", angle)
setattr(self, f"{attr}_velocity", vel)
放っておくと針は自然に“真下”を向きます。
物理式で「へたり」を再現しています。
⚡ クリックで一時的に復活
クリックすると針が正しい時刻に戻り、
5秒ほど元気に動いてからまたへたれます。
def on_click(self, event):
self.clicked = True
self.recover_timer = 300 # 約5秒
winsound.PlaySound("click.wav", winsound.SND_ASYNC)
クリック音「click.wav」があると“カチッ”と鳴って気持ちいいです。
🌈 針の“しなり”を再現
針の中央点を少しズラして描画し、柔らかく曲がって見せています。
def flex_coords(self, angle, length, bend_factor=0.1):
rad = math.radians(angle)
x_end = self.center + length * math.cos(rad)
y_end = self.center + length * math.sin(rad)
nx = math.sin(rad)
ny = -math.cos(rad)
curve = bend_factor * (abs(90 - angle) / 90) * 28
x_mid = (self.center + x_end)/2 + nx * curve
y_mid = (self.center + y_end)/2 + ny * curve
return [self.center, self.center, x_mid, y_mid, x_end, y_end]
針が下がるとき、ほんの少したわむように見えるのがポイント。
💚 デジタル時計(ポップ体+緑)
Windows標準フォント「HG創英角ポップ体」を使って、
発光感のある緑色で時間を表示しています。
self.digital_label = self.canvas.create_text(
self.center, self.center - 60,
text="--:--:--",
fill="#00cc44",
font=("HG創英角ポップ体", 18, "bold")
)
💾 exe化する方法(Windows)
Pythonを入れていないPCでも動かすには以下👇
pyinstaller --noconsole --onefile --add-data "へたれ様.png;." --add-data "click.wav;." GravityClock.py
dist フォルダに
GravityClock.exe が生成されます。
これを実行すると、デスクトップに“へたれ時計”が浮かび上がります。
☕ まとめ
この時計は、Pythonとライブコーディングの練習として作りました。
ですが、作るうちに「ただの時計」以上の存在になりました。
正確さよりも、人間らしさ。
へたれても、また立ち上がる。
🧠 学んだことまとめ
Tkinterでも柔らかいアニメーションは作れる
数学(バネ運動・角度制御)で表情が出る
GUI × 物理 × 演出 で作品感が生まれる
PyInstallerで誰でも配れる形にできる
💬 へたれのひとこと
「下を向いてもいい。大切なのは、また立ち上がること。」
Discussion