3 ポイント 投稿者 GN⁺ 2023-12-10 | 1件のコメント | WhatsAppで共有

Gooeyを使ってPythonコンソールプログラムをGUIアプリケーションに変換する

  • Gooeyは、Python 3のコンソールプログラムをユーザーフレンドリーなGUIアプリケーションに変換するツール。
  • コマンドプロンプトの代わりにGUIを提供し、プログラムをより簡単で見栄えのよいものにできる。
  • 非プログラマー向けのスクリプトや、データ移行などの作業用ユーティリティを作る際に役立つ。

Gooeyの仕組み

  • Gooeyは、argparse宣言のあるメソッドにデコレーターを追加することでコードに組み込まれる。
  • 実行時にPythonスクリプトを解析してArgumentParser参照を抽出し、GUIを組み立てる。
  • GooeyParserを使うことで、GUIに表示されるウィジェットをより細かく制御できる。

Gooeyの国際化

  • Gooeyはさまざまな言語へ簡単に翻訳でき、現在18以上の翻訳が含まれている。
  • 新しい言語サポートは、gooey/languages/ディレクトリにキー/値のペアを追加するだけで実現できる。

Gooeyのグローバル設定

  • Gooey全体の見た目や操作感は、デコレーターに引数を渡すことでカスタマイズできる。
  • エンコーディング、言語、起動時のサイズ、フォント設定など、さまざまな構成要素をカスタマイズできる。

Gooeyのレイアウトカスタマイズ

  • Gooeyは、いくつかの簡単なカスタマイズによって柔軟なレイアウトを提供する。
  • サイドバーの表示有無やタブグループの使用などにより、さまざまなレイアウトオプションを提供する。

Gooeyの実行モード

  • Gooeyは、コンテンツの種類やユーザーの習熟度に合わせてレイアウトを調整できる複数の表示モードを提供する。
  • 高度、基本、設定なしモードにより、さまざまなユーザーニーズに合わせたGUIを提供できる。

Gooeyのメニュー

  • カスタムのメニューグループや項目をGooeyのメニューバーに追加できる。
  • 多様な種類のメニューオプションをサポートし、プログラム情報、メッセージダイアログ、リンクなどを提供する。

Gooeyの動的検証

  • ユーザー入力をプログラムに渡す前に、Gooeyは必要に応じて事前検証を実行し、すべての引数が検証を通過していることを確認できる。

GooeyのライフサイクルイベントとUI制御

  • Gooeyは、プログラムの正常実行や失敗に対して追加の後続処理を行い、UIの現在の状態を制御できるライフサイクルフックを提供する。

Gooeyの進行状況表示

  • Gooeyは、テキストによる進捗更新に基づいて進捗バーの状態を更新できる。
  • 正規表現やカスタム評価式を通じて、進捗状況をGooeyに通知できる。

Gooeyのアイコンカスタマイズ

  • Gooeyは、デフォルトのアイコンをカスタム画像/アイコンに置き換える機能を提供する。
  • image_dir引数を通じて、カスタム画像ディレクトリを指定できる。

Gooeyのパッケージング

  • Gooeyを実行ファイルとしてパッケージ化するのは非常に簡単で、pyinstallerを使ってアプリケーションを配布可能な実行ファイルとしてバンドルできる。

GN⁺の意見

この記事で最も重要なのは、GooeyがPythonコンソールプログラムをGUIアプリケーションへ簡単に変換できる点です。これにより、プログラマーではないユーザーにとってプログラムがより親しみやすくアクセスしやすいものになり、その結果、開発者はユーザーインターフェースを心配することなくロジックに集中できます。Gooeyの多様な設定とカスタマイズオプションは、開発者にとって魅力的な選択肢を提供し、GUI開発の参入障壁を下げることに大きく貢献する可能性があります。

1件のコメント

 
GN⁺ 2023-12-10
Hacker Newsの意見
  • Gooeyプロジェクトについての開発者の説明

    • Gooeyは古いプロジェクトで、立ち上げ当初は argparse が堅実な選択肢だった。
    • 現在のGooeyはJSONを使っており、argparse から分離されている。
    • argparse は依然として主要なインターフェースとして残っているが、他にこれといった代替がない。
    • Gooeyを使えば、Pythonだけでなく任意の実行ファイルも呼び出せる。
    • 最後のコミットが2年前であることについて、年齢を重ねて優先順位が変わり、無償でソフトウェア開発を続けることを正当化しにくくなったという残念な思いを述べている。
  • Gooeyと argparse の関係についての議論

    • argparse は簡単な作業には適しているが、Click ベースのCLIも多く、Click を基盤にした人気のCLIライブラリも存在する。
    • Click と互換性があるかは確認できておらず、argparse にしか対応しないのであれば、「ほぼすべて」という表現は正確ではないかもしれない。
    • プロジェクトに対する信頼を損なう未解決のIssueがあるにもかかわらず、プロジェクト自体は興味深いアイデアを含んでいる。
  • Gooeyに関する過去の議論へのリンク

    • 2021年6月と2014年8月にHacker NewsでGooeyについての議論があったことを示すリンク。
  • オペレーティングシステムとシェルがプログラムをよりうまく実行できてほしいという意見

    • プログラムがJSONやプロトコル形式で通信し、シェルのコマンド構造やGUIを改善できるようになってほしい。
    • 現状ではシェル補完ファイルをエクスポートする程度で、さまざまなフラグ形式やパーサーライブラリが存在する一方、GUIはない。
  • Textualフレームワークの紹介

    • PythonでシンプルなAPIを使い、ターミナルとWebブラウザで動作するユーザーインターフェースを構築できる Textual フレームワークの紹介。
  • ffmpeg向けGUI版への問い合わせ

    • ffmpegのパラメータをGUIで提供するツールへの関心を示している。
  • ユーザー入力を期待するCLIツールとGooeyの統合方法についての質問

    • ゲームエンジンのデバッグ用bisectスクリプトにGUIを追加し、ユーザーが問題を診断しやすくする方法への関心。
  • GUIからCLIに変換するツールへの関心

    • 逆にGUIをCLIへ変換するツールがあればよいという希望。
  • Naked Objectsコンセプトへの言及

    • Javaクラスとアノテーションを定義するとGUIやWebフロントエンドが自動生成されるというアイデアであるNaked Objectsの説明。
  • GooeyがWebアプリを生成できるかへの興味

    • GooeyがReactやJSなしでWebアプリを生成できるのかという疑問。
    • CLIプログラムの前段にWebフロントエンドを置くローコードツールであるPython Script Serverとの比較にも触れている。