在wxPython中绘制笛卡尔平面

时间:2013-04-11 18:26:01

标签: python wxpython cartesian

我希望在我的python应用程序GUI中包含一个笛卡尔平面。我正在使用wxPython构建GUI。我想知道最好的方法吗?应根据轴在不同位置填充图像。

非常感谢有关此问题的任何帮助。

此致 丹

1 个答案:

答案 0 :(得分:2)

虽然线条不在正确的位置(不确定原因)。您可以绑定到面板并直接绘制到它,

import wx

class Cartesian(wx.Frame):
    def __init__(self, parent=None, id=-1, title=""):
        wx.Frame.__init__(self, parent, id, title, size=(640, 480))

        self.panel = wx.Panel(self)
        self.panel.Bind(wx.EVT_PAINT, self.OnPaint)

    def OnPaint(self, event):
        dc = wx.PaintDC(event.GetEventObject())
        dc.Clear()
        dc.SetPen(wx.Pen(wx.BLACK))
        dc.DrawLine(320, 0, 320, 480)
        dc.DrawLine(0, 240, 640, 240)

app = wx.App(False)
frame = Cartesian()
frame.Show()
app.MainLoop()

因此,此代码根据框架创建要绘制的面板,然后使用dc.DrawLine()方法绘制黑色笔,该方法采用4个参数,第一个x / y坐标和第二个x / y坐标。

或者,您可以以类似的方式使用wx.StaticLine()

import wx

class Cartesian(wx.Frame):
    def __init__(self, parent=None, id=-1, title=""):
        wx.Frame.__init__(self, parent, id, title, size=(640, 480))

        self.panel = wx.Panel(self)

        wx.StaticLine(self.panel, pos=(320, 0), size=(1, 480), style=wx.LI_VERTICAL)
        wx.StaticLine(self.panel, pos=(0, 240), size=(640, 1), style=wx.LI_HORIZONTAL)

app = wx.App(False)
frame = Cartesian()
frame.Show()
app.MainLoop()