wxPython トグルボタンを作って並べる

2011/01/25

wxPythonでトグルボタンを作って並べてみる。
トグルボタンはクリックすると状態が変わり、再びクリックすると状態が元に戻る。これの繰り返し。
今回はクリックすると、ボタンの色を緑色に変化させた。もういちどクリックすると元の色に戻る。

#!/usr/bin/env python
#coding:utf-8

import wx

class MyButton(wx.Button):
    def __init__(self,parent,label):
        wx.Button.__init__(self,parent,-1,label=label)
        self.ftoggle=None

    def Mark(self):
        self.SetBackgroundColour('green')

    def Unmark(self):
        self.SetBackgroundColour('wx.NullColour')

    def Toggle(self):
        if self.ftoggle:
            self.Unmark()
            self.ftoggle=None
        else:
            self.Mark()
            self.ftoggle=True

class MyWindow(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"MyTitle",size=(300,200))
        self.button=[]
        for i in range(6):
            labelstr = "button "+str(i)
            self.button.append(MyButton(self,labelstr))

        sz=wx.BoxSizer(wx.VERTICAL)
        for i in self.button:
            sz.Add(i,1,wx.EXPAND)
            self.SetSizer(sz)
            self.Bind(wx.EVT_BUTTON, self.DoSomething)
        
    def DoSomething(self,event):
        btn=event.GetEventObject()
        btn.Toggle()

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=MyWindow(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

実行すると

プログラムを実行した後、button 2 と button 4 をクリックした。

wxPython

Posted by skw