最もシンプルな例
シンプルなボタンひとつのアプリケーション
tags: | python, gui, tips |
---|---|
created: | 2007-02-05T20:24:24 |
シンプルな例で基本をマスターしよう!
ファイルリスト
- resource.xrc
- sample.py
- wx_utils.py
- setup.py
- main_icon.ico
- main_icon.py
リソース内容
これはXRCedを使って編集した結果です。
resource.xrc
<?xml version="1.0" encoding="utf-8"?>
<resource>
<object class="wxFrame" name="MainFrame">
<title></title>
<object class="wxBitmapButton" name="ID_BIG_BUTTON">
<bitmap stock_id="wxART_INFORMATION"></bitmap>
</object>
<size>480,320</size>
<bg>#FFFFFF</bg>
</object>
</resource>
メインコード
sample.py
#!/usr/bin/local/python
# -*- coding: utf-8 -*-
import sys
import os
import wx
import wx_utils
from wx_utils import XRC, XRCID, XRCCTRL
import main_icon
class MainFrame(wx.Frame):
u"""MainFrame class deffinition.
"""
RESOURCE_ID = 'MainFrame'
#MENUBAR_ID = 'MainMenubar'
binder = wx_utils.bind_manager(RESOURCE_ID)
def __init__(self, parent=None):
pre = wx.PreFrame()
XRC().LoadOnFrame(pre, parent, self.RESOURCE_ID)
self.PostCreate(pre)
#self.SetMenuBar(XRC().LoadMenuBar(self.MENUBAR_ID))
self.binder.bindall(self, self.RESOURCE_ID)
self.SetIcon(main_icon.getIcon())
@binder(wx.EVT_BUTTON, id=XRCID('ID_BIG_BUTTON'))
def OnMenuAbout(self, event):
wx.SafeShowMessage(u'情報', 'BIG Button Pressed!')
# startup application.
if __name__=='__main__':
app = wx.App(False)
wx_utils.XrcInit()
frame = MainFrame()
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
解説
ファイル「main_icon.py」ってなに?
main_icon.pyはいかのコマンドをつかってジェネレートします。
img2py -i main_icon.ico main_icon.py
この「img2py」はwxPythonパッケージに含まれているユーティリティです。
ファイル「setup.py」ってなに?
py2exeを使って、Pythonスクリプトをexe形式に変換するスクリプトです。
setup.py
import sys
from distutils.core import setup
import py2exe
from wx_utils import manifest
if not 'py2exe' in sys.argv:
sys.argv.insert(1, 'py2exe')
py2exe_options = {
'compressed': 1,
'optimize': 0,
'includes': [],
'excludes': [],
'dll_excludes': [],
'packages': [],
'bundle_files': 2}
setup(
options = {'py2exe': py2exe_options},
windows = [{
'script' : 'sample.py',
'icon_resources': [(1, 'main_icon.ico')],
'other_resources': [(24,1,manifest('sample'))],
}],
data_files =[],
zipfile = None)
自分のアプリケーション開発時には、 20行目の「’script’ : ‘sample.py’」や 22行目の「’other_resources’: [(24,1,manifest(‘sample’))]」にある 「sample」をアプリケーション名に適時書き換えてくださいね。
実行すると、resource.xrcをコンパイルしたresource.pyを作成し、 distフォルダの中に以下のファイルを生成します。
FileName | Size |
---|---|
sample.exe | 3,508,993 |
python24.dll | 1,867,776 |
MSVCR71.dll | 352,256 |
w9xpopen.exe | 4,608 |
sample.exeはライブラリや依存モジュールのほとんどを含んでいるため サイズが大きくなってしまいますが、 これらのファイルをPythonのインストールしていないPCに持っていっても動作します。