27-python_GUI-レイアウト管理-イベント処理


1.wxPython-レイアウト管理
寸法器-sizer,wx.BoxSizer->>help(wx.BoxSizer)-役割:追加されたコンポーネントのレイアウト位置を管理する-使用法:hbox=wx.BoxSizer([wx.HORIZONTAL])          vbox = wx.BoxSizer(wx.VERTICAL)-レイアウトを容易にするためにpanelを追加-コンポーネントを追加してsizerを管理する.add(コンポーネント、proportion=、flag=、border=)の例
#-*- encoding:UTF-8 -*-
import wx

app = wx.App()
win = wx.Frame(None, title="My Notebook", size=(410, 335))

panel = wx.Panel(win)

openButton = wx.Button(panel, label="Open")
saveButton = wx.Button(panel, label="Save")
filepathTxt = wx.TextCtrl(panel)
contentTxt = wx.TextCtrl(panel, style=wx.TE_MULTILINE)

#    ,                     
# proportion :         1
# flag : expand   
hbox = wx.BoxSizer() 
hbox.Add(filepathTxt, proportion=1, flag=wx.EXPAND)
hbox.Add(openButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton, proportion=0, flag=wx.LEFT, border=5)

#  , 
bbox = wx.BoxSizer(wx.VERTICAL)
bbox.Add(hbox, proportion=0, flag=wx.EXPAND|wx.ALL, border=5)
bbox.Add(contentTxt, proportion=1,flag=wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border=5)


panel.SetSizer(bbox)

win.Show()
app.MainLoop()

2.wxPython-イベント処理
    
コンポーネントのBind(func)によってイベント処理関数をバインドする、例えば、ボタンをクリックしたときにコンソールに「hello」def printHelloEvetHandle(evt):print「hello」btnを印刷する.Bind(wx.EVT_BUTTON, printHelloEvtHandle)        
例:
#-*- encoding:UTF-8 -*-
import wx

def openFileEventHandle(evt) :
    filepath = filepathTxt.GetValue()
    fopen = open(filepath)
    content = fopen.read()
    fopen.close()
    contentTxt.SetValue(content)

def saveFileEventHandle(evt) :
    filepath = filepathTxt.GetValue()
    fopen = open(filepath, "w")
    content = contentTxt.GetValue()
    fopen.write(content)
    fopen.close()

app = wx.App()
win = wx.Frame(None, title="My Notebook", size=(410, 335))

panel = wx.Panel(win)

openButton = wx.Button(panel, label="Open")
saveButton = wx.Button(panel, label="Save")
filepathTxt = wx.TextCtrl(panel)
contentTxt = wx.TextCtrl(panel, style=wx.TE_MULTILINE)


#    
openButton.Bind(wx.EVT_BUTTON, openFileEventHandle)
saveButton.Bind(wx.EVT_BUTTON, saveFileEventHandle)


#    ,                     
# proportion :         1
# flag : expand   
hbox = wx.BoxSizer() 
hbox.Add(filepathTxt, proportion=1, flag=wx.EXPAND)
hbox.Add(openButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton, proportion=0, flag=wx.LEFT, border=5)

#  , 
bbox = wx.BoxSizer(wx.VERTICAL)
bbox.Add(hbox, proportion=0, flag=wx.EXPAND|wx.ALL, border=5)
bbox.Add(contentTxt, proportion=1,flag=wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border=5)


panel.SetSizer(bbox)

win.Show()
app.MainLoop()