如何将设备上下文(wx.DC)放入sizer-wxpython

如何将设备上下文(wx.DC)放入sizer-wxpython,wxpython,wxwidgets,Wxpython,Wxwidgets,您好,我想将设备上下文放入sizer中,但是当我尝试这样做时,python返回一个错误 import wx class Example(wx.Frame): def __init__(self, parent, title): super(Example, self).__init__(parent, title=title, size=(250, 150)) self.sizer = wx.BoxSizer()

您好,我想将设备上下文放入sizer中,但是当我尝试这样做时,python返回一个错误

import wx
class Example(wx.Frame):
    def __init__(self, parent, title):
        super(Example, self).__init__(parent, title=title, 
            size=(250, 150))
        self.sizer = wx.BoxSizer()

        self.Bind(wx.EVT_PAINT, self.OnPaint)
        button1 = wx.Button(self, id=wx.ID_ANY, label='Button',pos=(8, 38), size=(175, 28))
        self.sizer.Add(button1, 1, wx.EXPAND|wx.ALL, 10)
        self.Centre()
        self.Show()

    def OnPaint(self, e):
        dc = wx.PaintDC(self)
        self.sizer.Add(dc, 1, wx.EXPAND|wx.ALL, 10)
        dc.DrawLine(50, 60, 190, 60)

if __name__ == '__main__':
    app = wx.App()
    Example(None, 'Line')
    app.MainLoop()

谢谢大家!

你唯一能放进施胶器的东西就是一个窗口。设备上下文不是窗口,因此不能将其放入大小调整器中

创建一个窗口,将其放入sizer,然后,当需要在窗口上绘制时,从窗口创建设备上下文

我认为你最好的办法是把线移走

    self.sizer.Add(dc, 1, wx.EXPAND|wx.ALL, 10)
线路

  dc.DrawLine(50, 60, 190, 60)

将在窗口中画出dc所属的线(self)

唯一可以放入sizer的是窗口。设备上下文不是窗口,因此不能将其放入大小调整器中

创建一个窗口,将其放入sizer,然后,当需要在窗口上绘制时,从窗口创建设备上下文

我认为你最好的办法是把线移走

    self.sizer.Add(dc, 1, wx.EXPAND|wx.ALL, 10)
线路

  dc.DrawLine(50, 60, 190, 60)

将在dc所属的窗口中绘制您的线条(self)

按钮是一个窗口。你可以把按钮放在施胶器里。但不能放置属于按钮的设备上下文。按钮是一个窗口。你可以把按钮放在施胶器里。但不能放置属于按钮的设备上下文。