gpt4 book ai didi

python - 如何使用 python Tkinter 将 matplotlib 图形嵌入到弹出窗口中

转载 作者:行者123 更新时间:2023-11-30 22:26:12 24 4
gpt4 key购买 nike

我有一个 tkinter 程序,当我最初运行它时,它会显示 matplotlib 图形。然而,我在另一个弹出窗口中嵌入第二个 matplotlib 图时遇到了麻烦。

理想情况下,我希望能够单击一个按钮并显示一个包含 matplotlib 的窗口。

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np
import Tkinter as Tk

class Window():
def __init__(self, master):
self.master = master
self.frame = Tk.Frame(master)
self.button1 = Tk.Button(self.master, text = 'Open Graph Window', width = 25,command= self.new_window)
self.button1.pack()
self.f = Figure( figsize=(7, 6), dpi=80 )
self.ax0 = self.f.add_axes( (0.05, .05, .50, .50), axisbg=(.75,.75,.10), frameon=True)
self.ax0.plot(np.max(np.random.rand(100,10)*10,axis=1),"r-")

self.frame = Tk.Frame(root)
self.frame.pack(side=Tk.LEFT, fill=Tk.BOTH, expand=1)

self.canvas = FigureCanvasTkAgg(self.f, master=self.frame)
self.canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
self.canvas.show()


def new_window(self):
self.newWindow = Tk.Toplevel(self.master)
self.app = Graph(self.newWindow)

class Graph():
def __init__(self, master):
self.master = master
self.frame = Tk.Frame(master)
self.f1 = Figure( figsize=(10, 9), dpi=80 )
self.ax10 = self.f1.add_axes( (0.05, .05, .50, .50), axisbg=(.75,.75,.10), frameon=True)
self.ax10.plot(np.max(np.random.rand(100,10)*10,axis=1),"r-")
self.quitButton = Tk.Button(self.frame, text = 'Quit', width = 25, command = self.close_windows)
self.canvas = FigureCanvasTkAgg(self.f1, master=self.master)
self.canvas.show()
self.quitButton.pack()
self.frame.pack()

def close_windows(self):
self.master.destroy()

if __name__ == '__main__':
root = Tk.Tk()
app = Window(root)
root.title( "MatplotLib with Tkinter" )
root.update()
root.deiconify()
root.mainloop()

我有我认为应该可以在打开另一个窗口时生成另一个 matplotlib 图形的代码。但这不起作用。当我单击“打开窗口按钮”时,如何才能显示第二个图表?

任何帮助将不胜感激

最佳答案

您刚刚忘记将 Canvas 打包到 Graph 类中。添加行

self.canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

Graph__init__方法中,图表应该显示在顶层。

关于python - 如何使用 python Tkinter 将 matplotlib 图形嵌入到弹出窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297059/

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