ウィンドウを表示させるだけ
空のウィンドウを表示させるだけなら、以下のコードでできます。
import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"ウィンドウタイトル",size=(500,400)) if __name__=="__main__": app = wx.App(False) MyFrame().Show(True) app.MainLoop()
self class を使った方が個人的に便利なので、これを使います。このself classの使い方に関しては別の記事で紹介したいと思います。
今すぐマスター!Python self classの使い方
ウィンドウにいろいろ設置する
wx.Frameのみではうまく設置することができません。wx.Frameに直接ウィジェットを設置しようとすると、設置したウィジェットが全体に引き延ばされ、
うまくレイアウトを構造することができません。そのため、いろいろなウィジェットを配置するには、wx.Panelを利用します。
以下の例ではwx.StaticTextを設置させ、Panelの背景色も設定しています。
import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"ウィンドウサンプル",size=(500,400)) panel = wx.Panel(self,-1) panel.SetBackgroundColour("yellow") #Panelの色の設定。いらないならこの行を削除してください。 statictext = wx.StaticText(panel,-1,"テキストです",pos=(10,10)) if __name__=="__main__": app = wx.App(False) MyFrame().Show(True) app.MainLoop()
ちなみに、ウィンドウのサイズはwx.Frame.__init__してる行のsize=()で変えられます。
StaticTextの位置はpos=()で設定できます。
ウィンドウのカスタマイズ
最小化ボタン、最大化ボタンを消去、リサイズ不可にする
以下のように変更してください。
wx.Frame.__init__(self,None,-1,"ウィンドウタイトル",size=(500,400), style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
style=のところがポイントです。リサイズ不可能なウィンドウとなっています。
いろいろカスタマイズ
wx.Frame.__init__(self,None, -1, "ウィンドウタイトル", size=(500,400), style=wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
この中から、wx.MINIMIZE_BOXを抜かせば、最小化ボタンが使えなくなり、 wx.MAXIMIZE_BOXを抜かすと、最大化ボタンが使えなくなります...
※1 システムメニューというのは、タイトルバーを右クリックされたときにでてくるメニューのことを表します↓
※2 wx.CAPTIONをなくすと以下のような表示になります。
なんか一応リサイズはできるけどなんか変な感じ...
ということで、タイトルバーを非表示にしたウィンドウづくりを、今度別の記事で投稿したいと思います。
※3 よくわかりませんが、これは、子ウィンドウがでたときのちらつきを除去するためにあるようです。
ステータスバーに表示しない
wx.FRAME_NO_TASKBARというスタイルを追加させてみてください。ステータスバーに表示されなくなります。
ただし、Windowsのみ。
さて、どうだったでしょうか。これから、wxPythonに関する記事を上げていこうと思います。
もしわからないこと・きになることがあればコメントお願いします。
動作環境
・Windows 10
・64bit
・Python3.9.1
・wxPython4.1.1a1
関連記事:
wxPythonでシンプルなメモ帳を作成する
wxPythonで複数のウィンドウを表示させる
0 件のコメント:
コメントを投稿