2012-01-28 3 views
0

私はwxpythonとoglライブラリを使用してPythonでセグメントを描画するための小さなプログラムを作っています。キャンバスを作成してサイザーに追加しましたが、キャンバスのサイズを固定することはできません。wxpython oglライブラリの固定キャンバスシェイプ

sizer = wx.BoxSizer(wx.VERTICAL) 
canvas_sizer = wx.BoxSizer(wx.HORIZONTAL) 
text_sizer = wx.BoxSizer(wx.HORIZONTAL) 
stat = wx.StaticText(panel,-1,'position') 

canvas = ogl.ShapeCanvas(panel) 
diagram = ogl.Diagram() 
canvas.SetDiagram(diagram) 
diagram.SetCanvas(canvas) 

canvas_sizer.Add(canvas,1,wx.GROW) 
text_sizer.Add(stat,1,wx.ALL,5) 
sizer.Add(canvas_sizer,1,wx.GROW) 
sizer.Add(text_sizer) 

self.SetSizer(sizer) 
sizer.Fit(self) 

上記のコードは、実際のコードの一部です。あなたはスロットが0に占有しなければならないし、それが必要な場合に、内容に最小サイズを与える割合を設定する必要がありますキャンバスサイズが

答えて

1

を固定にする方法を提案してください:

sizer = wx.BoxSizer(wx.VERTICAL) 
text_sizer = wx.BoxSizer(wx.HORIZONTAL) 
canvas_sizer = wx.BoxSizer(wx.HORIZONTAL) 
stat = wx.StaticText(self, -1, "position") 

# for testing I used a panel instead of your ogl object 
canvas = wx.Panel(self, -1)  
canvas.SetMinSize((-1, 70))  # Needed here to give a min size to panel, 
           # otherwise the panel would not be seen. 
           # The sizer will occupy the minimal 
           # to hold its contents. 

canvas_sizer.Add(canvas, 1, wx.EXPAND, 0) 
sizer.Add(canvas_sizer, 0, wx.EXPAND, 0) # <- note proportion 0 here 
text_sizer.Add(stat, 1, wx.EXPAND, 0) 
sizer.Add(text_sizer, 1, wx.EXPAND, 0) 
self.SetSizer(sizer) 
sizer.Fit(self) 
self.Layout() 
+0

はあなたのためにどうもありがとうございます助けて。それは私の問題を解決しました – Vishwanath