🕐 はじめに
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 が生成されます。
これを実行すると、デスクトップに“へたれ時計”が浮かび上がります。
🧱 実行イメージ
📸(ここにGIFやスクショを貼るとQiitaのTOPで映えます)
背景の中で針がふわりと動き、
時にはへたり、時には立ち上がる。
☕ まとめ
この時計は、Pythonとライブコーディングの練習として始めました。
ですが作るうちに、ただの時計以上の意味を持つようになりました。
正確さよりも、人間らしさ。
へたれても、また立ち上がる。
