WXPython可滚动绘画面板

时间:2016-11-17 09:40:21

标签: python wxpython wxwidgets

今天我制作可滚动的油漆面板有一个问题。 我想使用以下代码制作垂直和水平盒式传感器:

#Панель рисования
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和last)来评论块时,代码运行良好,并且在绘制时,程序不会崩溃。我想要滚动条,因为在绘图时,DrawingPanel正在改变大小。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

看看你在做什么:DrawPanel位于ScrollBarH内,ScrollBarV位于DrawPanel内,用作sizer,因此位于{{1}内}}。所以你已经设法创建了一个窗口和大小调整器的递归层次结构 - 毫不奇怪它不起作用。