我希望在我的 python 应用程序 GUI 中包含一个笛卡尔平面。我正在使用 wxPython 构建 GUI。我想知道最好的方法是什么?平面应根据轴在不同位置填充图像。
任何有关此问题的帮助将不胜感激。
问候,丹
虽然线条的位置并不完全正确(不知道为什么)。您可以像这样绑定到面板并直接绘制到它,
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()