【问题标题】:How to make a canvas (rectangle) in wxpython?如何在 wxpython 中制作画布(矩形)?
【发布时间】:2019-08-14 13:28:08
【问题描述】:

我正在尝试制作一个 Windows 画布类型的矩形,如果您在理解我的意思时遇到问题,这里是一张图片,

在 wxpython 中有没有办法做到这一点? (另外,有没有办法将它设置为自动调整到窗口宽度-20px?,所以窗口周围的半径,并将调整到用户窗口大小。

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    编辑:我在 wxPython IRC 频道上询问,一位名叫“r4z”的人对我的代码进行了以下编辑,该编辑适用于 Windows 7。

    import wx
    
    ########################################################################
    class MyPanel(wx.Panel):
        """"""
    
        #----------------------------------------------------------------------
        def __init__(self, parent):
            """Constructor"""
            wx.Panel.__init__(self, parent)
            self.Bind(wx.EVT_PAINT, self.OnPaint)
    
        #----------------------------------------------------------------------
        def OnPaint(self, event):
            """"""
            pdc = wx.PaintDC(self)
            try:
                dc = wx.GCDC(pdc)
            except:
                dc = pdc
    
            w, h = self.GetSizeTuple()
            w = w - 10
            h = h - 10
    
            dc.Clear()
            dc.DrawRectangle(x=5, y=5, width=w, height=h)
    
    
    #----------------------------------------------------------------------
    def OnSize(event):
        event.EventObject.Refresh()
        event.Skip()
    
    
    if __name__ == "__main__":
        app = wx.App(False)
        frame = wx.Frame(None, title="Test")
        panel = MyPanel(frame)
        frame.Bind(wx.EVT_SIZE, OnSize)
        frame.Show()
        app.MainLoop()
    

    或者,您可以查看 wx.StaticBox 小部件。

    编辑 #2:您也可以像这样设置框架的样式并跳过整个 OnSize 业务:

    frame = wx.Frame(None, title="Test", style=wx.DEFAULT_FRAME_STYLE|wx.FULL_REPAINT_ON_RESIZE)
    

    【讨论】:

    • 我通过 wxPython 的 IRC 频道添加了一个修复程序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2017-10-21
    • 2022-01-05
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多