Matplotlib Python窃取屏幕焦点问题

9
我的代码从Arduino接收串行数据,对其进行处理,然后绘制图表。我使用matplotlib作为图形界面。每次它“绘制”时,它会强制吸引注意力,用户将无法查看除此之外的任何内容。如何最好地使其停止?(代码除了窃取焦点外都可以正常运行)。我尝试使用matplotlib.use('Agg')方法,因为在另一篇帖子上看到过,但它没有起作用。(使用MAC OS X)。
下面展示的代码是更新数据的超级简单图形,我遇到了同样的问题。我不展示我的代码,因为没有正确的输入无法复制粘贴。
import matplotlib
from matplotlib import *
from pylab import *
# import math


x=[]
y=[]
def function(iteration):
    xValue=iteration#Assigns current x value
    yValue=(1./iteration)*34#Assigns current y value

    x.extend([xValue]) #adds the current x value to the x list
    y.extend([yValue]) #adds the current y value to the y list


    clf() #clears the plot

    plot(x,y,color='green') #tells the plot what to do 
    draw() #forces a draw

def main():

    for i in range(1,25): #run my function 25 times (24 I think actually)
        function(i)
        pause(.1)

main()

你能把代码简化到最小,以便复制问题吗?不会有很多人阅读那么多的代码。 - tacaswell
没问题。我已经拿出我的代码,并展示了正在运行的绘图函数的基础知识,以及名为“main”的函数,这是我实际调用运行的函数。它在以下注释中。@tcaswell - Michael Slater
只要运行代码的人拥有所有的软件包,我相信这是可行的。(指整个代码,而不是上面粘贴的部分。)告诉我你认为我应该怎么做才能使它格式良好,我会将其粘贴。 - Michael Slater
我的代码中没有'figure()'。你怎么使用它?另外,我已经用更简单的东西替换了我的代码@tcaswell,但我仍然遇到同样的问题。 - Michael Slater
经过一番试验,我修复了问题。我之前是使用Canopy作为python的前端,但它会打开自己的基础图形界面。经过调整,我现在从命令行运行程序,完美解决了问题。 - Michael Slater
显示剩余4条评论
2个回答

1

你尝试过使用matplotlib的交互模式吗?

你可以使用ion()命令来开启它(详见文档

如果你使用交互模式,你不需要调用draw()函数,但是根据你想要的输出结果,你可能需要使用clf()函数来清除你的图形。


0

我发现使用Tkagg后端可以工作

import matplotlib

matplotlib.use('Tkagg')

感谢 457290092 的贡献。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接