質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2930閲覧

PythonのwxpythonライブラリーでGUI作っていますが・・・問題が・・・

Python.R

総合スコア28

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/26 10:53

wxPythonを用いて、プログラミングの文法を手軽に確認できるツールみたいなものを作っています。

以下がコードです。

Python

1import wx 2import os 3 4#Python用の関数を宣言 5def python_button(event): 6 if event.GetId() == 3: 7 os.system('data\3_list_and_loop.txt') 8 elif event.GetId() == 4: 9 os.system('data\4_function_and_module.txt') 10 elif event.GetId() == 1: 11 os.system('data\1_variable.txt') 12 elif event.GetId() == 2: 13 os.system('data\2_input_and_if.txt') 14 elif event.GetId() == 5: 15 os.system('data\5_file_control.txt') 16 elif event.GetId() == 6: 17 os.system('data\6_text_control.txt') 18 elif event.GetId() == 7: 19 os.system('data\7_recall_function.txt') 20 elif event.GetId() == 8: 21 os.system('data\8_COM_Sapi.txt') 22 23 24application = wx.App() 25frame = wx.Frame(None, wx.ID_ANY, 'プログラミング言語文法確認辞書&ツール', size=(700, 450)) 26frame.CreateStatusBar() 27image = wx.Image('img\background.jpg')#追記したコード1 28bitmap = image.ConvertToBitmap()#追記したコード2 29 30notebook = wx.Notebook(frame, wx.ID_ANY) 31 32#それぞれのパネルにnotebook(タブ)の属性を付与する 33panel_1 = wx.Panel(notebook, wx.ID_ANY) 34panel_2 = wx.Panel(notebook, wx.ID_ANY) 35panel_3 = wx.Panel(notebook, wx.ID_ANY) 36 37wx.StaticBitmap(panel_1, -1, bitmap, pos=(0, 0), size=image.GetSize()) #追記したコード3 38 39#タブパネルごとのバックグラウンドカラーを指定 40#panel_1.SetBackgroundColour('#FF0000') 41panel_2.SetBackgroundColour('#00FF00') 42panel_3.SetBackgroundColour('#0000FF') 43 44#タブメニュー文字列の表示を指定 45notebook.InsertPage(0, panel_1, 'Python') 46notebook.InsertPage(1, panel_2, 'tab_2') 47notebook.InsertPage(2, panel_3, 'tab_3') 48 49#ボタンの戻り値と表示文字列の指定 50button_1_py = wx.Button(panel_1, 1, '変数') 51button_2_py = wx.Button(panel_1, 2, '入力と\n条件分岐') 52button_3_py = wx.Button(panel_1, 3, 'リストとループ') 53button_4_py = wx.Button(panel_1, 4, '関数と\nモジュール') 54button_5_py = wx.Button(panel_1, 5, 'ファイル操作') 55button_6_py = wx.Button(panel_1, 6, 'テキスト処理\n(乱数・正規表現)') 56button_7_py = wx.Button(panel_1, 7, '再起呼出\n(2進数計算)') 57button_8_py = wx.Button(panel_1, 8, 'COM(Sapi)') 58 59#フォントサイズの指定 60font = wx.Font(20, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) 61button_1_py.SetFont(font) 62button_2_py.SetFont(font) 63button_3_py.SetFont(font) 64button_4_py.SetFont(font) 65button_5_py.SetFont(font) 66button_6_py.SetFont(font) 67button_7_py.SetFont(font) 68button_8_py.SetFont(font) 69notebook.SetFont(font) 70 71#ボタンクリック時の動作を指定 72frame.Bind(wx.EVT_BUTTON, python_button, button_1_py) 73frame.Bind(wx.EVT_BUTTON, python_button, button_2_py) 74frame.Bind(wx.EVT_BUTTON, python_button, button_3_py) 75frame.Bind(wx.EVT_BUTTON, python_button, button_4_py) 76frame.Bind(wx.EVT_BUTTON, python_button, button_5_py) 77frame.Bind(wx.EVT_BUTTON, python_button, button_6_py) 78frame.Bind(wx.EVT_BUTTON, python_button, button_7_py) 79frame.Bind(wx.EVT_BUTTON, python_button, button_8_py) 80 81#ボタン配置のレイアウトを指定 82layout = wx.GridSizer(rows=4, cols=3, gap=(0, 0)) 83layout.Add(button_1_py, 0, wx.GROW) 84layout.Add(button_2_py, 0, wx.GROW) 85layout.Add(button_3_py, 0, wx.GROW) 86layout.Add(button_4_py, 0, wx.GROW) 87layout.Add(button_5_py, 0, wx.GROW) 88layout.Add(button_6_py, 0, wx.GROW) 89layout.Add(button_7_py, 0, wx.GROW) 90layout.Add(button_8_py, 0, wx.GROW) 91panel_1.SetSizer(layout) 92 93frame.Centre() 94frame.Show() 95 96application.MainLoop()

これを実行するとそれぞれのテキストファイルにアクセスするための、ボタンが表示されるのですが、パネルの背景に画像を入れようとしましたが、画像が最前面に表示されてしまい、ボタンが表示されなくなってしまいます。
![画像が最前面に上書きされる]
追加したコードはコメントに書いています。

##試したこと
パネルに画像を表示するためのコード↓

Python

1wx.StaticBitmap(panel_1, -1, bitmap, pos=(0, 0), size=image.GetSize())

実行順序を変えようと記述位置をいろいろ変えたが、目立った変化はなし。

次に生成した「bitmap」オブジェクトに対して、バックグラウンドで画像を読み込む系のモジュールを探したがとくに見つからなかった。

これ以上は分からなかったため、こちらで質問させていただきました。
wxPythonに詳しい方、ご教授いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

wxPythonは全く詳しくはありませんが、z-index equivalent in wxPython?によると

As a rule, wx was not designed to support overlapping wx.Windows.

...this is the official stance of the wxWidgets team: the behavior of
overlapping sibling windows is undefined.

とあるので、ウインドウのz-order(重なりの順番)は制御できないようです…

投稿2018/12/26 13:58

can110

総合スコア38254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Python.R

2018/12/27 11:26

そうなんですね。wxのアップデートを期待するしかないようですね。 それか、他のライブラリーに移行するかですが、正直ここまで作ったものを全面修正する気にはなれませんね。ひとまず背景に画像を使うのは諦めます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問