python wxpython backend wxagg_在wxPython中使用draw()(复制轴)绘制不正确

我是Python和wxPython的新手,我尝试在一个盒子里模拟粒子,在随机的方向上以随机的速度。

我在wxFormBuilder中创建了一个简单的GUI,其中我有一个面板来显示paricles的图。粒子被设置到一个位置并绘制到面板上,然后我开始模拟并更新粒子的x和y位置。当重新绘制位置时,轴看起来像以前一样“粗”,看起来好像有几个轴在上面。在

我找不到关于这个问题的任何信息,我希望有人能帮我解决这个问题?在

这是创建绘图的代码:import wx

import particles

import random

import matplotlib

matplotlib.use('WXAgg')

from matplotlib.figure import Figure

from matplotlib.backends.backend_wxagg import \

FigureCanvasWxAgg as FigCanvas, \

NavigationToolbar2WxAgg as NavigationToolbar

matplotlib.rcParams.update({'font.size': 8})

class MyFrameSub( particles.GUI_MainFrame ):

def __init__( self, parent ):

particles.GUI_MainFrame.__init__( self, parent )

def InitData(self):

self.npart = int(self.m_npart.GetValue())

self.nsteps = int(self.m_steps.GetValue())

self.ndt = float(self.m_dt.GetValue())

self.x= [random.random() for I in range(self.npart)]

self.y= [2*random.random()-1 for I in range(self.npart)]

self.vx= [self.ndt*(2*random.random()-1) for I in range(self.npart)]

self.vy= [self.ndt*(2*random.random()-1) for I in range(self.npart)]

return

def CreatePlot(self):

panelsize = self.m_PlotPanel.GetClientSize()

self.figure = Figure(figsize=(panelsize[0]/100.0,panelsize[1]/100.0), dpi=100, frameon=False)

self.canvas = FigCanvas(self.m_PlotPanel, wx.ID_ANY, self.figure)

self.axes = self.figure.add_subplot(111)

self.axes.axis((-1,1,-1,1))

self.partplot, = self.axes.plot(self.x, self.y, 'ro')

self.canvas.draw()

return

def UpdateData(self):

for i in range(self.nsteps):

for j in range(self.npart):

self.x[j]=self.x[j]+self.vx[j]

self.y[j]=self.y[j]+self.vy[j]

if abs(self.x[j])>1:

self.vx[j]=-self.vx[j]

if abs(self.y[j])>1:

self.vy[j]=-self.vy[j]

self.partplot.set_xdata(self.x)

self.partplot.set_ydata(self.y)

self.canvas.draw()

return

61903904b7a5c58cc1196d3eb8e6a31d.png

UTQIk.jpg

你看斧子变丑了,我不知道为什么。在

我想的另一个问题是:

当我运行一个需要一段时间UI没有响应的循环时,是否可以让UI处于活动状态以取消循环(如果需要)?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值