2020年3月5日木曜日

wxpython panelの複数表示及び下panelにNotebookを貼り付け ボタンを押してNotebookのタブを切り替える




wxpython/notebook5.py

1 # coding: UTF-8
  2 #@@@panelの複数表示及び下panelにNotebookを貼り付け
  3 #@@@ウィンドウの大きさが変わるのに未対応
  4 #@@@ボタンを押してNotebookのタブを切り替える
  5
  6 #notebook3.pyが上の状態なので再考
  7 #子パネルを親パネルに貼り付けてOKとなる
  8
  9 import wx
 10
 11 #p0の上にp1とnoteを配置する
 12 class MyFrame(wx.Frame):
 13     def __init__(self, parent, id):
 14         size = (400, 300)
 15         wx.Frame.__init__(self, parent, id, size=size)
 16         p0 = wx.Panel(self)
 17
 18         #panelはsizerを使って配置が出来ないようだ。
 19         #panelは親にそのまま位置と大きさを指定して貼り付ける
 20         y = int(size[1] / 2)
 21         x = size[0]
 22         p1 = wx.Panel(self, pos=(0, 0), size=(x, y))
 23         p2 = wx.Panel(self, pos=(0, y), size=(x, y))
 24         p1.SetBackgroundColour("green")
 25         p2.SetBackgroundColour("blue")
 26
 27
 28
 29         #p2にNotebookを配置
 30         ly2 = wx.BoxSizer(wx.VERTICAL)
 31         self.note = MyNotebook(p2)
 32         ly2.Add(self.note, 1, wx.EXPAND)
 33         p2.SetSizer(ly2)
 34
 35         self.Show()
 36
 37         #p1にボタンを配置
 38         ly1 = wx.BoxSizer(wx.VERTICAL)
 39
 40         bt1 = wx.Button(p1, -1, "tab_select_1")
 41         bt2 = wx.Button(p1, -1, "tab_select_2")
 42         bt1.Bind(wx.EVT_BUTTON, self.note.select_1)
 43         bt2.Bind(wx.EVT_BUTTON, self.note.select_2)
 44
 45         ly1.Add(bt1, 1, wx.LEFT)
 46         ly1.Add(bt2, 1, wx.LEFT)
 47         p1.SetSizer(ly1)
 48
 49
 50 #noteをMyNotebookから作成する
 51 class MyNotebook(wx.Notebook):
 52     def __init__(self, parent):
 53         wx.Notebook.__init__(self, parent, -1)
 54         pan1 = wx.Panel(self, -1)
 55         pan2 = wx.Panel(self, -1)
 56         self.AddPage(pan1, "Page 1")
 57         self.AddPage(pan2, "Page 2")
 58         # 固定テキスト1,2を パネル1,2に作成 
 59         #StTxt1 = "h" + "f"
 60         StTxt1 = wx.StaticText(pan1, -1, "Text1", pos=(20,20))
 61         StTxt2 = wx.StaticText(pan2, -1, "Text2", pos=(20,20))
 62
 63     def select_1(self, event):
 64         self.SetSelection(0)
 65
 66     def select_2(self, event):
 67         self.SetSelection(1)
 68
 69 if __name__ == '__main__':
 70     app = wx.App(False)
 71     MyFrame(None, -1)
 72     app.MainLoop()
~                                                                                          
~                                                                                          
~                                                                                          
~                                      

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

ページ

Featured Posts