【问题标题】:How to draw a rectangle and put a text inside it如何绘制一个矩形并在其中放置一个文本
【发布时间】:2015-03-09 17:52:26
【问题描述】:

我是第一次使用 wxPython。我的要求是创建一个矩形框并在其中写一些文本。我试图达到同样的效果,但矩形框没有在窗口框架中呈现:

#!/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


    【解决方案1】:

    您的示例存在几个问题:

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

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

    但是,还有一个问题:一旦你最小化框架,图形就会消失。

    简而言之,请参阅wxPython wiki 中的以下示例了解正确绘制的最简单方法(意思是,触发一些绘图命令并正确重新绘制/刷新)。 p>

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多