2020年2月27日木曜日
wxpython SplitterWindowにSplitterWindowをつける。
coding: UTF-8
import wx
import wx.lib.scrolledpanel as scrolled
import glob
import os
class MyApp(wx.App):
def __init__(self):
#エラーが出たらファイルに書き出す
wx.App.__init__(self, redirect=True, filename="log.txt")
class MyFrame(wx.Frame):
## *args 可変長タプル **kwargs 可変長辞書
def __init__(self, parent, *args ,**kargs):
frame = wx.Frame.__init__(self, parent, *args, **kargs)
#pal= wx.Panel(self)
#pal.SetBackgroundColour("BLACK")
#Layout(self, pal)
Layout(self)
self.Show()
#第1引数:全体の親フレーム 第2引数:右側に配置するパネル
class Layout():
#def __init__(self, frame, pal):
def __init__(self, frame):
#spwの中にpalとspw2を入れ、spw2の中にpal21,pal22をいれる
#pal22はスクロールウィンドウ
#ウィンドウ分割のコンストラクタ
#spw ----------------------
# spw2 ++++++++++++++ | pal01
# pal21 |
# pal22 |
# +++++++++++++++|
# ---------------------------
spw = wx.SplitterWindow(frame, wx.ID_ANY, style=wx.SP_3D)
spw2 = wx.SplitterWindow(spw, wx.ID_ANY, style=wx.SP_3D)
self.pal01 = wx.Panel(spw, wx.ID_ANY)
self.pal21 = wx.Panel(spw2,wx.ID_ANY)
self.pal22 = wx.Panel(spw2,wx.ID_ANY)
#ly = wx.BoxSizer(wx.VERTICAL)
#ly.Add(pal, flag=wx.EXPAND)
#self.pal01.SetSizer(ly)
#分割ウィンドウを小さくした場合、なくなってしまうのを防ぐため
#最小幅を設定する。
spw.SetMinimumPaneSize(1)
spw2.SetMinimumPaneSize(1)
#ウィンドウを左右に分割 左のウィンドウの幅を90
spw.SplitVertically(spw2, self.pal01, 90)
spw2.SplitHorizontally(self.pal21, self.pal22, 300)
self.pal21.SetBackgroundColour("BLACK")
self.pal22.SetBackgroundColour("GOLD")
# #spw2.SetSplitMode(wx.SPLIT_HORIZONTAL)
# #0でウィンドウを半々にできるのだが、両方スクロールパネルではこ
# #の設定が効かないため、片方を通常パネルにする。
def setPal(self, pal):
ly = wx.BoxSizer(wx.VERTICAL)
ly.Add(pal, flag=wx.EXPAND)
self.pal01.SetSizer(ly)
def getWindow(self):
return self.pal, self.pal21, self.pal22
if __name__ == '__main__':
#app = MyApp()
app = wx.App(False)
MyFrame(None, -1, "Test ", size=(800, 600))
app.MainLoop()
~
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿