【发布时间】:2017-11-24 18:48:35
【问题描述】:
我正在制作一个嵌入式 matplotlib 图形 GUI 程序。
当用户单击“更新”按钮时,我想在上方图形窗口中制作叠加图形。
但是,当我点击“更新”按钮时没有响应。
我使用的是 Spyder Python 3.6 版本。
下面是我写的。
import matplotlib.pyplot as plt
import csv
import numpy as np
import tkinter as tk
from tkinter import ttk
import matplotlib as plt
plt.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from matplotlib import style
class Analysis_app(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Tk.wm_title(self, "SIM Analyser")
right_f = tk.Frame(self)
right_f.pack(side=tk.RIGHT)
self.entry1 = ttk.Entry(right_f).pack()
self.entry2 = ttk.Entry(right_f).pack()
self.entry3 = ttk.Entry(right_f).pack()
self.entry4 = ttk.Entry(right_f).pack()
self.entry5 = ttk.Entry(right_f).pack()
Button1 = ttk.Button(right_f, text='Update', command=self.plot).pack(side=tk.BOTTOM)
self.left_f = tk.Frame(self)
self.left_f.pack(side=tk.LEFT)
f = Figure(figsize=(10,6), dpi=100)
self.upplot = f.add_subplot(211)
self.botplot = f.add_subplot(212)
a =self.upplot
a.clear()
a.plot([1,2,3],[1,2,3])
canvas = FigureCanvasTkAgg(f, self)
canvas.show()
canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
toolbar = NavigationToolbar2TkAgg(canvas, self)
toolbar.update()
canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
self.mainloop()
def plot(self):
a =self.upplot
a.clear()
a.plot([1,2,3],[5,2,5])
【问题讨论】:
-
顺便说一句:
Button1 = Button(...).pack()将 None 分配给Button1因为pack()返回None,而不是小部件。如果你以后不需要访问按钮,那么你可以不用Button1->Button(...).pack() -
好的。我修改了。谢谢~! :)
-
顺便说一句:因为您使用 Python3,所以您可以使用
super().__init__()而不是tk.Tk.__init__(self)。因为Analysis_app继承自tk.Tk所以你可以使用self.wm_title("SIM Analyser")而不是tk.Tk.wm_title(self, "SIM Analyser")
标签: python matplotlib tkinter