python GUIプログラミング——wxpython簡単なメモ帳プログラムを書く

2853 ワード

wxPythonはPythonプログラミング言語のGUIツールボックスです.Pythonプログラマーは、丈夫で強力なグラフィックユーザーインタフェースを持つプログラムを簡単に作成することができます.Python言語が流行しているwxWidgetsのプラットフォーム間GUIツールライブラリへのバインドです.wxWidgetsはC++言語で書かれています.
Python言語とwxWidgetsGUIツールライブラリのように、wxPythonはオープンソースソフトウェアです.これは、誰もが無料で使用でき、ソースコードを表示および変更したり、パッチに貢献したりして、機能を追加できることを意味します.
wxPythonはプラットフォームをまたいでいます.これは、同じプログラムが変更されずに複数のプラットフォームで実行できることを意味する.現在サポートされているプラットフォームは、32ビットマイクロソフトWindowsオペレーティングシステム、ほとんどのUnixまたはクラスUnixシステム、アップルMacOS Xです.
次はwxpythonを使用して簡単なメモ帳プログラムを作成し、ローカルファイルを開き、編集し、保存することができます.
#!/usr/bin/python

import wx

def OnOpen(event):
    """

    Load a file into the textField.
    """
    dialog = wx.FileDialog(None,'Notepad',style = wx.OPEN)
    if dialog.ShowModal() == wx.ID_OK:
        filename.SetValue(dialog.GetPath())
        file = open(dialog.GetPath())
        contents.SetValue(file.read())
        file.close()
    dialog.Destroy()

def OnSave(event):
    """

    Save text into the orignal file.
    """
    if filename.GetValue() == '':
        dialog = wx.FileDialog(None,'Notepad',style = wx.SAVE)
        if dialog.ShowModal() == wx.ID_OK:
            filename.SetValue(dialog.GetPath())
            file = open(dialog.GetPath(), 'w')
            file.write(contents.GetValue())
            file.close()
        dialog.Destory()
    else:
        file = open(filename.GetValue(), 'w')
        file.write(contents.GetValue())
        file.close()

app = wx.App()
win = wx.Frame(None, title="Simple Editor", size=(600,400))

bkg = wx.Panel(win)

# Define a 'load' button and its label, bind to an button event with a function 'load'
loadButton = wx.Button(bkg, label='Open')
loadButton.Bind(wx.EVT_BUTTON, OnOpen)

# Define a 'save' button and its label, bind to an button event with a function 'save'
saveButton = wx.Button(bkg, label='Save')
saveButton.Bind(wx.EVT_BUTTON, OnSave)

# Define a textBox for filename.
filename = wx.TextCtrl(bkg)
# Define a textBox for file contents.
contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE | wx.HSCROLL)

# Use sizer to set relative position of the components.
# Horizontal layout
hbox = wx.BoxSizer()
hbox.Add(filename, proportion=1, flag=wx.EXPAND)
hbox.Add(loadButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton, proportion=0, flag=wx.LEFT, border=5)
# Vertical layout
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(contents, proportion=1,
         flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, border=5)

bkg.SetSizer(vbox)
win.Show()

app.MainLoop()

プログラム実行テストは次のとおりです.
この例は「Python基礎チュートリアル」の一例で、いくつかの修正をしました.基本的なメモ帳機能は完成したが,インタフェースはやや簡単で,コードもオブジェクト向けプログラミングの原則にうまく従っていない.