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

时间:2015-03-09 06:19:22

标签: wxpython

我第一次使用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()

我不确定我做错了什么错?

1 个答案:

答案 0 :(得分:0)

您的示例有几个问题:

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

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

但是,还会出现另一个问题:只要最小化帧,图形就会消失。

要缩短它,请参阅以下示例以获取wxPython wiki中正确绘制的最简单方法(意思是,触发一些绘图命令并正确地重新绘制/刷新)。

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