2016-11-17 65 views
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,但像數字和工具,一些變量。 當我運行這段代碼,並試圖借鑑,計劃將與此美眉: 「paint.sh:第1行:20858段錯誤(核心轉儲)python2 main.py」

當我的註釋塊創建滾動條並設置sizer(3d和最後的代碼),代碼工作得很好,而繪製時,程序不會崩潰。我想要滾動條,因爲繪圖時,DrawingPanel正在改變大小。我如何做到這一點?

回答

1

看看你在做什麼:你的DrawPanel位於ScrollBarH之內,它位於ScrollBarV之內,它用作sizer的尺寸,因此在DrawPanel之內。所以你已經設法創建了一個窗口和sizer的遞歸層次結構 - 毫無意外的是它不起作用。