我尝试将UI作为输入,然后关闭它,然后使用pyplot进行一些绘图。但是,当我尝试使用tkinter
运行脚本并导入matplotlib.pyplot
时,程序终止于脚本中的root = Tk()
,并且不会在此行之后运行任何命令(包括mainloop)
有没有办法在同一个脚本中同时使用tkinter
和matplotlib.pyplot
?
我正在运行的用户界面是:
from tkinter import *
class InputSelect(Frame):
def __init__(self, master):
self.master = master
Frame.__init__(self, master, width=200, height=200)
self.fillCanvas()
def fillCanvas(self):
self.canvas = Canvas(self, width=200, height=200)
self.canvas.pack()
self.aButton = Button(self, text="a", height=1, width=15, command=self.buttontest)
self.aButtonWindow = self.canvas.create_window(100, 80, window=self.aButton)
self.pack()
def buttontest(self):
print("buttontest")
def generateInputSelect():
print("test")
root = Tk()
print("test2")
app = InputSelect(root)
app.mainloop()
if __name__ == "__main__":
generateInputSelect()
这可以自行运行,但是如果我在一个单独的脚本中使用它:
import ui
import matplotlib.pyplot
ui.generateInputSelect()
控制台打印"测试"然后关闭,它没有达到" test2"。如果我删除import matplotlib.pyplot
,则会按预期运行此单独脚本。
答案 0 :(得分:0)
经过一番讨论和进一步研究后,通过终端运行程序导致我发现错误terminating with uncaught exception of type NSException
。
我可以通过使用
手动设置TkAgg后端来修复此错误import matplotlib
matplotlib.use("TkAgg")
from matplotlib import pyplot as plt
DonCristobal在Matplotlib Crashing tkinter Application
的建议此问题似乎与MacOS有关,这就是为什么某些用户无法复制错误的原因。