その前に皆さんはAngel Beats!というアニメを知っていますか?半年前に一夜で全話みたのですが、いまだに感動シーンなどを見返すと泣けてきます。
私史上一番感動したアニメなので是非見てください。
なぜライブラリを作ったか
まだ以下の記事をご覧になってない場合は先に読んでください。wxPythonのパスワード入力ボックスで表示/非表示を切り替える
ということでまあ、コードがいちいち複雑なんですね。
そんなわけで関数一つで切り替えることができるライブラリを作ろうということにしました。
注意してほしいのが、素人が作ったクソ雑ライブラリということです。
さらにいうと今回、用意している関数がめちゃんこ少ないです。みかん星です。
ということで、PassWordCtrlのライブラリのコード
必ず、ファイル名は「PWC.py」にしてください。import wx
class PassWordCtrl:
def __init__(self, parent, wxId, value="", pos=(0,0), size=(100,20)):
self.hiding = True
self.box0 = wx.TextCtrl(parent, wxId, value, pos=pos, size=size)
self.box1 = wx.TextCtrl(parent, wxId, value, pos=pos, size=size, style=wx.TE_PASSWORD)
self.box0.Hide()
def HideChars(self):
self.box0.Hide()
self.box1.SetValue(self.box0.GetValue())
self.box1.Show()
self.hiding = True
def ShowChars(self):
self.box0.Show()
self.box0.SetValue(self.box1.GetValue())
self.box1.Hide()
self.hiding = False
def SetValue(self, value):
self.box0.SetValue(value)
self.box1.SetValue(value)
def GetValue(self):
if self.hiding:
return self.box1.GetValue()
else:
return self.box0.GetValue()
def IsHiding(self):
return self.hiding
というあずこんなもんです。HideChars()で文字を隠し、ShowChars()で文字を表示させます。デフォルトでは隠しています。
一応SetValue(value)とGetValue()だけは機能するようになってます。
使用例
一応使用例を出しておきたいと思います。今回のライブラリを使用するにあたって、Pythonインストールフォルダのlibにライブラリを保存するか、同じディレクトリに保存するかする必要があります。
それでは使用例を行きます。
簡単な仕組みなので解説は省きます。
import wx
import PWC
def ShowChars(event):
if event.GetEventObject().GetValue():
passwordbox.ShowChars()
else:
passwordbox.HideChars()
def onButton(event):
wx.MessageBox(passwordbox.GetValue())
app = wx.App(0)
frame = wx.Frame(None, -1, "")
panel = wx.Panel(frame, -1)
passwordbox = PWC.PassWordCtrl(panel, -1,pos=10,10))
checkbox = wx.CheckBox(panel, -1, "Show Chars", pos=(10,50))
checkbox.Bind(wx.EVT_CHECKBOX, ShowChars)
button = wx.Button(panel, -1, "GetValue", pos=(10,80))
button.Bind(wx.EVT_BUTTON, onButton)
frame.Show(True)
app.MainLoop()
ということでこんな感じでしょう。
import PWCでしっかりと今回のライブラリを使っています。
んで、チェックボックスで表示非表示を切り替えて、ボタンで値を取得するってだけです。
バージョン2を作るか
バージョン2といっても、ただたんに関数を増やすだけですwxWindowにある関数とwxTextctrlにある関数一通りをこのライブラリでも使えるようにします。
やる気が出たらやりたいと思いますが、正直皆さんの方で手直ししてもらった方が現実的かもしれません。
0 件のコメント:
コメントを投稿