0

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

任何有关此问题的帮助将不胜感激。

问候,丹

4

1 回答 1

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()
于 2013-04-14T08:19:03.043 回答