Love-Proposal(ラブ・プロポーザル)— Tkinterで作るいたずらプロポーズアプリ

Other

概要

Love-Proposalは、Pythonの標準GUIライブラリであるTkinterを使って作られた、軽量で遊び心のあるデスクトップ向けジョークアプリです。中心に「Will you be mine? 💘」という問いを表示し、肯定側の「YES」ボタンを押すとポップアップで甘いメッセージが表示されます。一方、否定側の「NO」ボタンはマウスを近づけると移動してクリックさせないギミックを備えており、ユーザーを笑わせることを狙っています。依存はほぼ標準ライブラリのみで、手早く試せる点が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 2
  • メインの言語: Python

主な特徴

  • 可愛らしいテーマのGUI(背景やボタンの装飾を想定)
  • YESボタンでポップアップメッセージを表示
  • NOボタンがマウスに反応して逃げるインタラクション
  • 軽量で依存が少なく、すぐ実行可能

技術的なポイント

本プロジェクトは小規模ながら、ユーザインタラクションの実装例として学びやすい要素を含んでいます。実装は主に以下の技術要素で構成されていると推測されます。

  • Tkinterによるウィンドウとウィジェットの構築: ウィンドウ(Tk)、ラベル(Label)で問いかけテキストを表示し、ボタン(Button)でYES/NOを配置。レイアウトはpackやplace、gridのいずれかが使われますが、NOボタンを動かす必要があるためplaceやcanvas上での座標指定が多用されている可能性が高いです。

  • イベントバインディングとマウス追跡: NOボタンが「逃げる」挙動は、ボタン領域にマウスが入ったとき(''イベント)やマウスの移動('')を検出して、ボタンの座標をランダムまたは計算で移動することで実現します。衝突判定やウィンドウ端の処理(ボタンがウィンドウ外にはみ出さないように制限)を加えるのが一般的です。

  • ポップアップの利用: YESボタンはtkinter.messageboxやToplevelウィンドウを用いて、肯定のメッセージを表示します。シンプルなshowinfoやカスタムウィンドウで可愛いメッセージや画像を出す設計が考えられます。

  • ランダム性とUX調整: NOボタンの移動先はrandomモジュールで決めるケースが多いですが、直線的すぎるとユーザーに捕まえられてしまうため、移動距離を一定範囲で変えたりアニメーションを付けたりするとUXが向上します。移動頻度の調整(頻繁すぎると鬱陶しい、遅すぎると効果が薄れる)も重要です。

  • 実行環境と配布: 依存が標準ライブラリ中心のためpip不要でローカル実行できる点が利点です。配布する際はPyInstallerやpy2exeで単一実行ファイルにパッケージングすると、Python未インストール環境でも動作させられます。

  • 拡張性と注意点: 小さなスクリプト構成のため、国際化(日本語対応)、レスポンシブなウィンドウサイズ対応、スクリーンサイズに合わせた位置計算などを追加すると実用性が上がります。また、アクセシビリティ面ではキーボード操作対応や代替テキストの用意が望ましいです。

実コードはシンプルですが、イベントドリブンなGUI設計、ランダム配置や境界チェック、ポップアップ制御の良い学習材料になります。ワンファイル構成なので、初心者がTkinterの基礎を理解するのに適した教材的リポジトリです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • love_proposal.py: file

(love_proposal.pyにはウィンドウ生成、ラベルとボタン配置、NOボタンのイベントハンドラ、YESボタンでのメッセージ表示が含まれている想定です。)

使い方(想定)

  1. Python 3.x をインストールする。
  2. リポジトリをクローンまたはファイルをダウンロードする。
  3. ターミナルでディレクトリに移動して python love_proposal.py を実行する。
  4. ウィンドウが表示されたらYES/NOボタンを試す。

※配布形式や実際のエントリポイントはリポジトリ内のREADMEを参照してください。

改善提案(短く)

  • ボタン移動アルゴリズムを改良してウィンドウ端での挙動を滑らかにする
  • アニメーションや効果音を追加して演出を強化
  • PyInstallerでの単一実行ファイル化や、設定ファイルでメッセージをカスタム可能にする

まとめ

シンプルで遊び心のあるTkinterサンプル。学習素材や軽いジョーク用途に最適。

リポジトリ情報:

READMEの抜粋:

💖 Love Proposal – Tkinter Fun App

A cute, fun, and interactive Python GUI application using Tkinter that asks the user:

👉 “Will you be mine? 💘”

This app includes:

  • A lovely themed window
  • A YES button that shows a sweet message
  • A NO button that runs away when the user tries to click it 😆
  • Simple & smooth interaction

🎮 Features

✔ Beautiful themed GUI
✔ Funny & interactive “NO” button
✔ Pop-up message on “YES”
✔ Lightweight and easy to run…