リンク

2016年8月2日火曜日

pythonでGUIツールを作る ~アバウトダイアログ~

wxPythonでは数々の即席ダイアログが初めから用意されています。

みなさんもひとつくらいはフリーソフトをダウンロードして使っていることと思います。
そんなソフトの中に「バージョン情報」や「○○について」といった文言で、そのソフトの情報を表示するダイアログを見たことがあるのではないでしょうか。

今回ご紹介するのはそんな「アバウトダイアログ」です。
# -*- coding: utf-8 -*-

import wx
import wx.adv

def click(event):
    """ Click Event """

    info = wx.adv.AboutDialogInfo()

    info.SetName(u'オリジナルアプリ')
    info.SetVersion('1.0.0.1')
    info.SetCopyright('Copyright 2016 TAKE. All Right Reserved. ')
    info.SetDevelopers(['TAKE'])
    info.SetDescription(u'ここには説明を書きます')
    info.SetIcon(wx.Icon('a.png'))

    wx.adv.AboutBox(info)


app = wx.App()

frame = wx.Frame(None, -1, u'タイトル', size=(200, 200))
frame.CreateStatusBar()
p = wx.Panel(frame, -1)

button = wx.Button(p, -1, u'表 示')
button.Bind(wx.EVT_BUTTON, click)

frame.Show()
app.MainLoop()

<結果>

続いて詳細を見ていきます。



= = 詳細 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
上記のスクリプトを実行すると、ボタンだけが配置されたシンプルなフレームが表示されます。

そのボタンをクリックすると、今回ご紹介するアバウトダイアログが表示されます。
info = wx.AboutDialogInfo()
アバウトダイアログをインスタンス化する前に、まずはダイアログ上に表示する情報をまとめます。

info.SetName(u'オリジナルアプリ')
info.SetVersion('1.0.0.1')
info.SetCopyright('Copyright 2016 TAKE. All Right Reserved. ')
info.SetDevelopers(['TAKE'])
info.SetDescription(u'ここには説明を書きます')
info.SetIcon(wx.Icon('a.png'))
ここで表示させたい情報を追加していきます。

それぞれの意味は次の通りです。
# アプリケーション名
info.SetName()

# アプリケーションのバージョン
info.SetVersion()

# 著作権
info.SetCopyright()

# 開発者
info.SetDevelopers([ ])

# アプリの説明文
info.SetDescription()

# アーティスト
info.SetArtists()

# ドキュメント作者
info.SetDocWriters()

# アイコン wx.Icon()で指定する
info.SetIcon()

# ライセンス
info.SetLicence()

# 翻訳者
info.SetTranslators()

# ウェブサイトリンク
info.SetWebSite()
上記以外の情報を記述したい場合は、オリジナルでダイアログを作成するしかありません。

wx.AboutBox(info)
最後に、アバウトダイアログを表示します。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

pythonで作成したアプリケーションはexeファイル(Windows実行ファイル)に変換することができます。
これはつまり、オリジナルのアプリケーションを作成して配布できるということです。

アプリケーションではバージョン管理は必要不可欠なことなので、このアバウトダイアログを実装してすぐに確認できるようにしておきましょう。

2 件のコメント:

  1. 僕の環境で実行したところ、AttributeError: module 'wx' has no attribute 'AboutDialogInfo'とエラーが発生しました。
    そのため、wx.advをインポートし、wx.AboutDialogInfoをwx.adv.AboutDialogInfoに変換し、
    wx.AboutBoxをwx.adv.AboutBoxに変換する必要がありました。
    参考:https://wxpython.org/Phoenix/docs/html/wx.adv.AboutDialogInfo.html
    ---環境---
    Python 3.8
    Windows10

    このことを補足していただけると幸いです。

    返信削除
    返信
    1. コメント&ご指摘ありがとうございます。
      当方でも改めて確認したところ、おっしゃるとおりエラーが発生しました。
      (バージョンが変わったなどの影響かもしれません)
      記事内容を修正いたしました。
      ありがとうございましたm(_ _)m

      削除