我希望在我的python应用程序GUI中包含一个笛卡尔平面。我正在使用wxPython构建GUI。我想知道最好的方法吗?应根据轴在不同位置填充图像。
非常感谢有关此问题的任何帮助。
此致 丹
答案 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()