8

考虑运行以下代码(注意它是一个非常简化的版本来演示问题):

import matplotlib.pyplot as plot
from tkinter import * #Tkinter if your on python 2

def main():

    fig = plot.figure(figsize=(16.8, 8.0))

    root = Tk()
    w = Label(root, text="Close this and it will hang!")
    w.pack()
    root.mainloop()

    print('Code never reaches this point')

if __name__ == '__main__':
    main()

关闭第一个窗口可以正常工作,但关闭第二个窗口会导致代码挂起,因为root.mainloop()会导致无限循环。这个问题是调用引起的fig = plot.figure(figsize=(16.8, 8.0))。有谁知道在进行 matplotlib.pyplot 调用后如何让 root 成功关闭?

4

2 回答 2

8
import matplotlib
from tkinter import *

def main():

    fig = matplotlib.figure.Figure(figsize=(16.8, 8.0))

    root = Tk()
    w = Label(root, text="Close this and it will not hang!")
    w.pack()
    root.mainloop()

    print('Code *does* reach this point')

if __name__ == '__main__':
    main()

Tkinter窗口中嵌入 matplotlib 图形时,使用matplotlib.figure.Figure而不是plt.Figure.

于 2013-07-08T20:57:47.647 回答
0

我通过在打开 Tkinter 窗口之前“关闭”matplotlib 绘图(绘图完成后)解决了 matplotlib 与 Tkinter 冲突的问题:

plt.close()
tk = Tkinter()
...
于 2018-05-26T22:40:36.107 回答