合同会社ひめぽーと は、愛媛の店舗、生産者様のホームページ作成・制作・管理、ネットショップ作成・制作・管理、パソコン関連サポートなど、バックアップ致します。

wxpythonで作ったbuttonがWindows10ではアクティブにならない。

掲載日: / 更新日:
wxpythonで作ったbuttonがWindows10ではアクティブにならない。

Python+wxpythonのプログラムで、buttonがアクティブにならない

Linux環境では問題なく動作していたので、Windows10でも動作するだろうと思っていたら、ボタンが表示はされているがアクティブにならない現象が発生!

しばらく悩んだ末、原因判明というか、対応策が判明!

NGだったのは

sizer_4 = wx.BoxSizer(wx.VERTICAL)
self.panel_1 = wx.Panel(self, wx.ID_ANY)
self.panel_3 = wx.Panel(self, wx.ID_ANY)
self.button_1 = wx.Button(self.panel_3, wx.ID_EXIT, "")
self.button_2 = wx.Button(self.panel_3, wx.ID_ANY, "AAAA")
self.button_3 = wx.Button(self.panel_3, wx.ID_ANY, "BBBB")

sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.Add(label_1, 1, wx.EXPAND, 0)
sizer_4.Add(self.button_1, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
sizer_4.Add(self.button_2, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
sizer_4.Add(self.button_3, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
self.panel_3.SetSizer(sizer_4)
sizer_2.Add(self.panel_3, 0, wx.ALIGN_RIGHT | wx.ALL, 10)

要は、sizer4をpanel3に貼り付けて、sizer2へ

これを

sizer_2.Add(label_1, 1, wx.EXPAND, 0)
self.panel_1 = wx.Panel(self, wx.ID_ANY)
self.button_1 = wx.Button(self.panel_1, wx.ID_EXIT, "")
self.button_2 = wx.Button(self.panel_1, wx.ID_ANY, "AAAA")
self.button_3 = wx.Button(self.panel_1, wx.ID_ANY, "BBBB")

sizer_4 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_4.Add(self.button_1, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
sizer_4.Add(self.button_2, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
sizer_4.Add(self.button_3, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
sizer_2.Add(sizer_4, 0, wx.ALIGN_RIGHT | wx.ALL, 10)

sizer4をpanel3をかいさないで、直接sizer2に貼付け

これで、無事windows10でも問題なく動作しました。もちろん、Linuxも

全体的なサイズを決めたい場合など、Panelを介したいと思いますし、ルール的には問題ないと思いますが、極力省けるパネルは入れないようにして、デザインもsizerで設定したほうが、マルチプラットフォームを考えたとき良さそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


お気軽にお問合せ下さい
(パソコンのこと、格安システム構築、ホームページ作成、運用サポートなど)