python - 如何在wxpython中制作 Canvas (矩形)?

标签 python wxpython

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

a busy cat

在wxpython中有什么方法可以做到这一点吗? (另外,有没有办法将其设置为自动调整到窗口宽度-20px?,因此窗口周围有一个半径,并且会调整到用户窗口大小。

最佳答案

编辑:我在 wxPython IRC channel 上询问,一位名叫“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)

关于python - 如何在wxpython中制作 Canvas (矩形)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000987/

相关文章:

python - 使用 Python 和 imaplib 在 GMail 中移动电子邮件

python - python 中的错误字符范围

Python魔术方法混淆

python - 是否可以阻止迭代器到达文件末尾?

python - 如何从 FastAPI 端点返回字典 + 图像?

python - 如何通过发布事件设置 wx.combobox 的值

python - wxPython 语法高亮小部件

python:右键单击列表菜单不显示所选项目

android - Python - stdout 的 Android logcat 输出到 textview 然后保存到 .txt 文件错误

python - wxpython - 如何从类外刷新列表框?