2016-11-17 8 views
1

今日、スクロール可能なペイントパネルの作成には1つの問題があります。 私はこのコードを使用して垂直方向と水平方向のboxsizersを作りたい:WXPythonスクロール可能なペイントパネル

ここ
#Панель рисования 
DrawScroller = ScrolledWindow(PaintFrame, ID_ANY) 
DrawScroller.SetScrollRate(5, 5) 
DrawScroller.EnableScrolling(True, True) 

DrawScroller.SetSize(Size(685, 600-51)) 
DrawScroller.Move(Point(115, 0)) 
DrawScroller.SetBackgroundColour(Colour(255, 255, 255)) 

ScrollBarV = BoxSizer(VERTICAL) 
ScrollBarH = BoxSizer(HORIZONTAL) 

DrawPanel = Panel(DrawScroller, ID_ANY) 
DrawPanel.SetSize(Size(685*2, (600-51)*2)) 
DrawPanel.Move(Point(0, 0)) 
DrawPanel.SetBackgroundColour(Colour(255, 255, 255)) 

Paint = PaintZone(DrawPanel) 
Paint.Clear() 

x, y = DrawPanel.GetSize() 
ScrollBarH.Add(DrawPanel, x, y) 
ScrollBarV.Add(ScrollBarH) 
DrawScroller.SetSizer(ScrollBarV) 

PaintZoneがPaintDCと同じですが、数字とツールのようないくつかの変数を持ちます。 私はこのコードを実行し、描画しようとすると、プログラムはこれで鎮圧されます:私は、スクロールバーを作成してブロックをコメントすると

「20858セグメンテーションフォールト(コアダンプ)python2のmain.py paint.sh:ライン1」 sizerを設定すると(このコードでは3dと最後)、コードはうまく動作し、描画するとプログラムはクラッシュしません。描画するときにDrawingPanelがサイズを変更しているので、スクロールバーが必要です。どのように私はこれを行うことができますか?

答えて

1

DrawPanelはの内側にあり、ScrollBarVの内側にあり、サイザーとして使用されているため、内部にはDrawPanelです。だからあなたはウィンドウとサイザーの再帰的な階層を作成することができました。それはうまくいきません。

関連する問題