gpt4 book ai didi

python - Tkinter Matplotlib,后端冲突?

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:55 24 4
gpt4 key购买 nike

我是 python 的新手,但上周我一直在尝试编写一个软件来可视化一些复杂的东西。

基本的电影是:用户将需要的所有信息输入到 GUI 中,然后单击继续,我还有另一个重要的功能来生成所有图形。

这是有效的,但问题是当我运行该函数时,它持续了大约 2 分钟,tkinter 窗口卡住了。我读到我应该使用线程。然后我发现了这个:http://uucode.com/texts/pylongopgui/pyguiapp.html这是一个基本上做我想做的事加上一些其他事情的例子。

我现在正在尝试调整我的代码以使其适合这种情况。

这是我的问题:一切似乎都工作正常,只是在我的函数中有一个时刻弹出一个名为“tk”的新窗口,一切都卡住了。

这一刻一切都定格了:

# On trace les fils de chaine
for i in range(0, Couches_Trame + 1):
t = np.arange(0, np.pi, 0.1)
plt.figure(i)
plt.title('Plan de Trame ' + str(i+1), fontsize = '16')
ax = plt.gca()
ax.yaxis.set_visible(False)
ax.xaxis.set_visible(False)
plt.axis([-1, Plans, Fils_Chaine + 1, -1])
for j in range(0,Plans):
for k in range(0,Fils_Chaine):
plt.fill_between(np.cos(t)/8+j, np.sin(t+np.pi)/8+k+0.5, \
np.sin(t)/8+k+0.5, color='r')
plt.savefig('Blabla'+int(i))
plt.figure(Couches_Trame)
plt.title('Plan de Trame: Projection')

当我不使用 Tkinter 直接运行它时,一切正常,所以我不知道是什么原因造成的。

我也试过用这样的无限循环替换这段代码:

i=1
while i > 0:
i=i+1
print(i)

这有效,没有什么是卡住的。但后来我尝试了这个:

i=1
while i > 0:
i=i+1
plt.plot((i,i))

然后一切都卡住了,名为“tk”的窗口弹出并立即卡住。

我在某处读到这可能是 Tkinter 和 matplotlib 后端之间的冲突,但仅此而已,这对我帮助不大。

编辑:我不知道这是否有帮助,但我使用的是 Python Portble 2.7.2.1

最佳答案

我不能写评论,但有几件事要检查:

  • 在 python cmdline 上,尝试绘​​制一个非常简单的图形。例如:

    >>> import pyplot
    >>> pyplot.plot([1,3,1,3,1])

我的猜测是,这将显示一个 TK 窗口,但随后停止。

  • 看看 Tkinter 是否真的有效。尝试例如:

    >>> import Tkinter
    >>> import _tkinter
    >>> Tkinter._test()

最后一个命令应该显示一个带有按钮的小窗口。

此外,您并没有真正说明“卡住”的含义:

  • 您的系统是否完全锁定?

  • 脚本是否锁定?或者您可以关闭窗口,然后脚本就停止了吗?

  • 是在绘制什么东西,还是只是弹出一个空的 TK 窗口?

另一方面,由于您提到了线程,您可能遇到了一般的 GUI 问题:GUI 等待用户输入。如果你想让它等待那个,同时做计算,后者确实必须在一个单独的线程中。再一次,如果你想在每次计算新数字时更新你的图表,那么应该没有任何必要。参见例如http://matplotlib.sourceforge.net/examples/animation/simple_anim_tkagg.html

最后,如果您指定您的操作系统,这可能有助于调试您的设置。我假设 Python Portble 是可移植的 Python。

关于python - Tkinter Matplotlib,后端冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com