2016-11-17 3 views
1

Heute habe ich ein Problem mit scrollbare Farbpalette. Ich mag vertikalen und horizontalen boxsizers mache mit diesem Code:WXPython Scrollbare Farbpalette

#Панель рисования 
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) 

Hier PaintZone als PaintDC gleichen, aber mit einigen Variablen wie Figuren und Werkzeugen. Wenn ich diesen Code ausführen, und zu zeichnen versuchen, wird das Programm zerquetschen mit diesem: "paint.sh: Linie 1: 20.858 Segmentation fault (core dumped) python2 main.py"

Wenn ich kommentieren Block mit Bildlaufleisten zu schaffen und Einstellung Sizer (3d und zuletzt in diesem Code), Code funktioniert gut, und wenn zeichnen, stürzt Programm nicht ab. Ich möchte Bildlaufleisten, weil DrawingPanel beim Zeichnen die Größe ändert. Wie kann ich das machen?

Antwort

1

Betrachten Sie, was Sie tun: Ihre DrawPanel ist innerhalb ScrollBarH, die innerhalb ScrollBarV ist, die, wie die Sizer verwendet wird und somit im Inneren, DrawPanel. So haben Sie es geschafft, eine rekursive Hierarchie von Fenstern und Sizern zu erstellen - keine Überraschung, dass es nicht funktioniert.