gpt4 book ai didi

python - osx 上的 Tkinter/matplotlib 多个事件窗口

转载 作者:可可西里 更新时间:2023-11-01 10:33:41 26 4
gpt4 key购买 nike

我有一个在我的windows机器上执行的脚本如下

import matplotlib.pyplot as plt
import numpy as np
import tkinter

class main(tkinter.Frame): #main window
def __init__(self, root): # initialise
tkinter.Frame.__init__(self)
self.root = root


tkinter.Button(self, text='New spots', command=self.newSpots).grid()

def newSpots(self):
x = np.random.rand(10)
y = np.random.rand(10)
plt.scatter(x,y)
plt.show()



if __name__=='__main__':
root = tkinter.Tk()

app = main(root).grid()
root.mainloop()

在 Windows 上运行时,它会打开一个带有简单按钮的窗口,单击此按钮会打开一个 matplotlib 查看器,其中在随机位置绘制了 10 个点。随后每次按下按钮都会再添加十个点。

在 Mac 上执行这段代码会产生相同的初始窗口,第一次按下按钮会生成绘图并按预期打开查看器。但是,在查看器窗口关闭之前,无法与原始窗口进行交互(只有查看器上的控件可以工作)。如何使 mac 上的行为与 windows 机器上的行为相同?

最佳答案

我找到了这个问题的解决方案——matplotlib 似乎默认为 Windows 上的 TkAgg 后端(我不确定这是一般的 Windows 问题,还是特定于机器上的任何特定安装)。

将以下行添加到脚本的顶部会强制 TkAgg 后端并导致两台机器上的行为相同。

import matplotlib
matplotlib.use("TkAgg")

关于python - osx 上的 Tkinter/matplotlib 多个事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368979/

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