wxPython ボタンをインアクティブにしてみる

2011/01/25

ボタンをインアクティブにして、クリックできないようにする。

ボタンをクリックしても動作できないようにしたいときがある。そんなときは、ボタンをインアクティブしておく。

wx.Buttonクラスはwx.Windowから継承されているので、wx.Windowクラスで定義されたメソッドを使う。なんと、ボタンもウィンドウのひとつなんですね。

インアクティブにする
Disable()
アクティブにする
Enable()

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

import wx

class MyWindow(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,u"インアクティブの実験",size=(300,200))
        self.SetBackgroundColour('white')
        self.btn1 = wx.Button(self,-1,label="exit",pos=(10,10),size=(60,60))
        self.btn2 = wx.Button(self,-1,label="Inactive",pos=(80,10),size=(60,60))
        self.btn3 = wx.Button(self,-1,label="Active",pos=(150,10),size=(60,60))
        self.Bind(wx.EVT_BUTTON, self.OnBtn1, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.OnBtn2, self.btn2)
        self.Bind(wx.EVT_BUTTON, self.OnBtn3, self.btn3)
    def OnBtn1(self,event):
        self.Close(True)
    def OnBtn2(self,event):
        self.btn1.Disable()
    def OnBtn3(self,event):
        self.btn1.Enable()

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

実行すると

Inactiveボタンをクリックすると、exitボタンがインアクティブになります。クリックしても終了しません。

参考

wxPython

Posted by skw