wxPython DrawRectangleで棒グラフもどきを表示してみる

2011/01/27

wxPythonのDrawLineではラインの太さを設定できるので、棒グラフを描いてみたが、ラインの両端が丸くなって表示されてしまって棒グラフには使えない。こんなとき、DrawRectangleを使うときっちり棒グラフの棒を描くことができる。いつものごとくメモしておく。

グラフィックを描くにあたり参考にしたリンク

ウィンドウに青、黄、赤の棒グラフのようなものを表示させる。そして、DrawLineで同じ太さのラインを描いて比較してみる。

#!/usr/bin/env python
#coding:utf-8

import wx

class MyWindow(wx.Frame):
    def __init__(self, parent=None, id=-1, title=None):
        wx.Frame.__init__(self, parent, id, title)
        self.panel = wx.Panel(self, size=(300, 200))
        self.panel.SetBackgroundColour('WHITE')
        self.panel.Bind(wx.EVT_PAINT, self.OnPaint)
        self.Fit()
    def OnPaint(self, event):
        dc = wx.PaintDC(self.panel)
        dc.SetPen(wx.Pen('blue'))
        dc.SetBrush(wx.Brush('blue'))
        dc.DrawRectangle(20,20,260,40)
        dc.SetPen(wx.Pen('yellow'))
        dc.SetBrush(wx.Brush('yellow'))
        dc.DrawRectangle(20,60,200,40)
        dc.SetPen(wx.Pen('red'))
        dc.SetBrush(wx.Brush('red'))
        dc.DrawRectangle(20,100,160,40)
        dc.SetPen(wx.Pen('green',40))
        dc.DrawLine(20,170,280,170)

if __name__ == '__main__':
    app = wx.PySimpleApp()
    w = MyWindow(title='wxgr-rect')
    w.Center()
    w.Show()
    app.MainLoop()

メモ

  • SetPenでペンを、SetBrushでブラシを設定しておいて、DrawRectangle(x, y, width, height)メソッドをコールすると、長方形の枠を描いてから、同じ色で中を塗りつぶす。
  • DrawLine(x1, y1, x2, y2)メソッドは両端が丸く表示される。

実行すると

wxPython

Posted by skw