Pythonでコマンドラインランチャを作ろう!

不定期連載第一弾!「Pythonコマンドラインランチャを作ろう」!!!
今日は、あの長方形の入力ボックスを出すところまでやります(^o^)/
僕が最初にランチャを作ろうと思って行き詰まったのは、どうやったらfenrirとかbluewindとかcraftlaunchとかで文字を入力するあの四角いのを作れるか。

とか

とか。
上がfenrirで下がcraftlaunchです。

「ランチャ 作り方」とか適当にググったけど見つからない。いろんな言語の紹介を見てみても、GUIに強いだとか弱いだとか資料があまりないだとか書いてあってよくわからない。いろいろ試行錯誤して、時間を喰ってしまった。くぅっ;;
というわけで、あの四角いのを作る過程だけ書いておきます。誰かの参考にでもなったらいいな。

PythonwxPython

僕がやったのは、この組み合わせ。wxPythonというのは、PythonGuiを作りたいときに使うらしい。
どちらも、インストールとかその後の環境変数の設定とかはググったら難なくできるので、それはとばします^^

wxPythonの情報

wxPython Index

http://www.harukaze.net/~haruka/wxpython/index.html

勉強を始めた頃は、ずっとここを参考にしていた。

日本語のリファレンス

http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx26.htm#classref

ある程度わかってきたら、ここを参考に試す、というのをずっとやってた。

ランチャのGuiに必要なもの

TextCtrlと、ListBoxがあればとりあえずランチャっぽくなるようです。

これの上が、TextCtrlで下がListBoxです。
で、それぞれの作り方。

作り方

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()で表示する、という順序ですね。

次回予告

次回は、それぞれのコントロールとイベントを結びつけるまで!ここまで来たらあと一歩で完成だ!不定期だしノリで半分言っているあまり期待しちゃダ、ダメ・・・・だよ・・・///!?