将wx.DrawCircle对齐到框架的中心

时间:2015-03-02 14:43:36

标签: python python-2.7 wxpython wxwidgets

你好,我想在画框的中心画一个圆圈。 有什么像wx.Align_Center我可以用于wx.DrawCircle下面是我的代码。

#!/usr/bin/python

# points.py

import wx
import random

class Points(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(250, 150))

        self.Bind(wx.EVT_PAINT, self.OnPaint)

        self.Centre()
        self.Show(True)

    def OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.SetBrush(wx.Brush('RED'))
        dc.DrawCircle(20,20)


app = wx.App()
Points(None, -1, 'Test')
app.MainLoop()

1 个答案:

答案 0 :(得分:2)

只需获得框架的大小,然后将宽度和高度除以2。

import wx
import random

class Points(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(250, 150))

        self.Bind(wx.EVT_PAINT, self.OnPaint)

        self.Centre()
        self.Show(True)

    def OnPaint(self, event):
        w, h = self.GetClientSize()
        dc = wx.PaintDC(self)
        dc.SetBrush(wx.Brush('RED'))
        dc.DrawCircle(w/2,h/2, 20)


app = wx.App()
Points(None, -1, 'Test')
app.MainLoop()

那会让你非常接近。您可能需要稍微调整一下高度,因为我认为GetSize不会占系统菜单的宽度(所有窗口的顶部栏)。