2011-12-22 44 views
1

你好,我想将设备上下文放入sizer中,但是当我尝试这样做时,python返回一个错误。如何将设备上下文(wx.DC)放入sizer中? -wxpython

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() 

谢谢!

回答

1

您可以放入sizer的唯一一件事就是一个窗口。设备上下文不是一个窗口,所以你不能把它放到sizer中。

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

我想为你做的最好的事情是消除行

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

线

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

会提醒你在窗口排队,直流属于(个体经营)

+0

对不起,如果我错了;一个按钮不是一个窗口? – thelost 2011-12-22 02:15:25

+0

一个按钮是一个窗口。您可以将按钮放在sizer中。但是你不能放置属于按钮的设备上下文。 – ravenspoint 2011-12-22 02:17:13

相关问题