您好我想将设备上下文放入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()
谢谢!
答案 0 :(得分:1)
你唯一可以放入sizer的是一个窗口。设备上下文不是窗口,因此您无法将其放入sizer中。
创建一个窗口,将其放入sizer中,然后,当您需要在窗口上绘图时,从窗口创建设备上下文。
我认为你最好的办法就是删除
行 self.sizer.Add(dc, 1, wx.EXPAND|wx.ALL, 10)
该行
dc.DrawLine(50, 60, 190, 60)
将在dc所属的窗口中绘制您的线条(自我)