wxPythonでウィンドウを表示させる

2021年6月3日木曜日

wxPython

t f B! P L

ウィンドウを表示させるだけ

空のウィンドウを表示させるだけなら、以下のコードでできます。

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を抜かすと、最大化ボタンが使えなくなります...

wx.MINIMIZE_BOX最小化ボタン
wx.MAXIMIZE_BOX最大化ボタン
wx.RESIZE_BORDERリサイズボーダー
wx.SYSTEM_MENUシステムメニュー※1
wx.CAPTIONタイトルバー※2
wx.CLOSE_BOX閉じるボタン
wx.CLIP_CHILDRENよくわからん ※3

※1 システムメニューというのは、タイトルバーを右クリックされたときにでてくるメニューのことを表します↓


※2 wx.CAPTIONをなくすと以下のような表示になります。

なんか一応リサイズはできるけどなんか変な感じ...

ということで、タイトルバーを非表示にしたウィンドウづくりを、今度別の記事で投稿したいと思います。

※3 よくわかりませんが、これは、子ウィンドウがでたときのちらつきを除去するためにあるようです。

ステータスバーに表示しない

wx.FRAME_NO_TASKBAR
というスタイルを追加させてみてください。ステータスバーに表示されなくなります。
ただし、Windowsのみ。
さて、どうだったでしょうか。これから、wxPythonに関する記事を上げていこうと思います。
もしわからないこと・きになることがあればコメントお願いします。
動作環境
・Windows 10
・64bit
・Python3.9.1
・wxPython4.1.1a1
関連記事:
wxPythonでシンプルなメモ帳を作成する
当ブログ内人気No1!!
wxPythonでシンプルなメモ帳を作成する
wxPythonで複数のウィンドウを表示させる
組み合わせてみよう!
wxPythonで複数のウィンドウを表示させる

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ