Arı*_*nay 2 python tkinter matplotlib
我有 matplotlib 脚本,可以读取 Excel 文件并绘制它。(作为 MATPLOT)
我制作了另一个 python 脚本,看起来像一个普通程序(顶部菜单,状态栏..)(作为 GUI)
我想在我的 GUI 中显示 MATPLOT。有没有办法调用 MATPLOT 中的所有脚本在 GUI 中运行?就像将视频嵌入到另一个网站一样。
root = Tk()
root.geometry("800x600")
#MENU
topMenu = Menu(root)
root.config(menu=topMenu)
loadMenu = Menu(topMenu, tearoff=0)
topMenu.add_cascade(label="File", menu=loadMenu)
loadMenu.add_command(label="Import New", command=doNothing)
loadMenu.add_command(label="Show 'Filter' Menu" , command=showOptions)
loadMenu.add_separator()
loadMenu.add_command(label="Exit", command=root.quit)
#GRAPH
#
#StatusBar
status = Label(root, text="File Name:", bd=1, relief=SUNKEN, anchor=W)
status.pack(side=BOTTOM, fill=X)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
该方法提供了子类tk.Frame,并且matplotlib.figure.Figure可以轻松地将代码重新用于其他目的。
它创建一个tkFrame,所有样板都准备好接受和显示 matplotlib Figure。
然后它创建一个Figure(再次准备好修改和扩展),并将其嵌入到tk.Frame上面创建的中。
最后,它启动了tk.mainloop
import matplotlib
import tkinter as tk
matplotlib.use('TkAgg')
# from matplotlib import style
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
class GraphPage(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.title_label = tk.Label(self, text="Graph Page Example")
self.title_label.pack()
self.pack()
def add_mpl_figure(self, fig):
self.mpl_canvas = FigureCanvasTkAgg(fig, self)
self.mpl_canvas.show()
self.mpl_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
self.toolbar = NavigationToolbar2TkAgg(self.mpl_canvas, self)
self.toolbar.update()
self.mpl_canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
class MPLGraph(Figure):
def __init__(self):
Figure.__init__(self, figsize=(5, 5), dpi=100)
self.plot = self.add_subplot(111)
self.plot.plot([1, 2, 3, 4, 5, 6, 7], [4, 3, 5, 0, 2, 0, 6])
fig = MPLGraph()
root = tk.Tk()
graph_page = GraphPage(root)
graph_page.add_mpl_figure(fig)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5465 次 |
| 最近记录: |