【问题标题】:How to put device context (wx.DC) into a sizer? -wxpython如何将设备上下文(wx.DC)放入sizer? -wxpython
【发布时间】:2011-12-22 10:21:38
【问题描述】:

您好,我想将设备上下文放入 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()

谢谢!

【问题讨论】:

    标签: wxpython wxwidgets


    【解决方案1】:

    你唯一可以放入sizer的是一个窗口。设备上下文不是窗口,因此不能将其放入 sizer。

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

    我认为对你来说最好的办法就是删除这条线

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

    线

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

    会在 dc 所属的窗口中画你的线(self)

    【讨论】:

    • 按钮就是一个窗口。您可以将按钮放在 sizer 中。但是您不能放置属于该按钮的设备上下文。
    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 2012-08-15
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多