Как поместить контекст устройства (wx.DC) в классификатор? -wxpython - PullRequest
1 голос
/ 22 декабря 2011

Здравствуйте, я хотел бы поместить контекст устройства в 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()

Спасибо!

1 Ответ

1 голос
/ 22 декабря 2011

Единственное, что вы можете поместить в сортировщик - это окно. Контекст устройства не является окном, поэтому вы не можете поместить его в классификатор.

Создайте окно, поместите его в свой классификатор, а затем, когда вам нужно нарисовать на окне, создайте контекст устройства из окна.

Я думаю, что вам лучше всего удалить строку

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

Линия

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

Нарисует вашу линию в окне, к которому принадлежит dc (self)

...