如何绘制矩形并在其中放置文本

How to draw a rectangle and put a text inside it

我是第一次使用wxPython。我的要求是创建一个矩形框并在其中写入一些文本。我试图实现相同但矩形框未在 windows 帧中呈现:

#!/usr/bin/env python

import wx

class Example(wx.Frame):

    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs)
        self.InitUI()

    def InitUI(self):
        self.SetTitle('BPSK')
        self.Maximize(True)
        self.Show(True)
        dc = wx.WindowDC(self)
        dc.DrawRectangle(10, 10, 200, 200)


    def ShowMessage(self, message):
        wx.MessageBox(message, 'Info',
            wx.OK | wx.ICON_INFORMATION)


def main():
    ex = wx.App()
    Example(None)
    ex.MainLoop()


if __name__ == '__main__':
    main()

我不确定我做错了什么?

您的示例存在几个问题:

虽然它确实有效(至少在 wxPython 2.9.5.1/msw 上),但它可能不是您想要的:

  • wx.WindowDC 画在整个 wx.Frame 上(而不是框架的内部)。您将使用 wx.ClientDC 仅绘制到内部(而不是标题栏和框架的图标)。

但是又会出现一个问题:一缩小边框,图形就没有了。

简而言之,请参阅以下示例wxPython wiki 中正确绘制 的最简单方法(意思是,启动一些绘图命令并使其 repainted/refreshed 正确)。

另一种方法是自己绘制位图(wx.Bitmap + wx.MemoryDC + wx.GraphicsContext 用于抗锯齿绘图)并使用 wx.StaticBitmap 来显示它。