Pythonでコマンドラインランチャを作ろう!
不定期連載第一弾!「Pythonでコマンドラインランチャを作ろう」!!!
今日は、あの長方形の入力ボックスを出すところまでやります(^o^)/
僕が最初にランチャを作ろうと思って行き詰まったのは、どうやったらfenrirとかbluewindとかcraftlaunchとかで文字を入力するあの四角いのを作れるか。
とか
とか。
上がfenrirで下がcraftlaunchです。
「ランチャ 作り方」とか適当にググったけど見つからない。いろんな言語の紹介を見てみても、GUIに強いだとか弱いだとか資料があまりないだとか書いてあってよくわからない。いろいろ試行錯誤して、時間を喰ってしまった。くぅっ;;
というわけで、あの四角いのを作る過程だけ書いておきます。誰かの参考にでもなったらいいな。
PythonとwxPython
僕がやったのは、この組み合わせ。wxPythonというのは、PythonでGuiを作りたいときに使うらしい。
どちらも、インストールとかその後の環境変数の設定とかはググったら難なくできるので、それはとばします^^
wxPythonの情報
wxPython Index
http://www.harukaze.net/~haruka/wxpython/index.html
勉強を始めた頃は、ずっとここを参考にしていた。
日本語のリファレンス
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx26.htm#classref
ある程度わかってきたら、ここを参考に試す、というのをずっとやってた。
作り方
TextCtrl
import wx class MyTxtCtr(wx.PySimpleApp): def OnInit(self): Frm = wx.Frame(None, -1, "wxPython", size=(400,48),pos=(400,400)) self.TxtCtr = wx.TextCtrl(Frm, -1) Frm.Show() return 1 app = MyTxtCtr() app.MainLoop()
ListBox
import wx class MyListBox(wx.PySimpleApp): def OnInit(self): self.lbFrame = wx.Frame(None, 0, "wxPython", size=(420,200),pos=(400,448),style=wx.DOUBLE_BORDER) self.LBox = wx.ListBox(self.lbFrame, -1, size=(415,200)) self.lbFrame.Show() return 1 app = MyListBox() app.MainLoop()
まとめるとこうなります。
TextCtrl+ListBox
import wx class MyExcalibur(wx.PySimpleApp): def OnInit(self): Frm = wx.Frame(None, -1, "wxPython", size=(400,48),pos=(400,400)) self.TxtCtr = wx.TextCtrl(Frm, -1) self.lbFrame = wx.Frame(None, 0, "wxPython", size=(420,200),pos=(400,448),style=wx.DOUBLE_BORDER) self.LBox = wx.ListBox(self.lbFrame, -1, size=(415,200)) Frm.Show() self.lbFrame.Show() return 1 app = MyExcalibur() app.MainLoop()
フレームを作り、そこにコントロールを組み込み、Show()で表示する、という順序ですね。