1 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
兩個(gè)問題:
在 GUI 中嵌入 matplotlib 時(shí)不應(yīng)使用 pyplot。請(qǐng)參閱tk 示例中的嵌入。
mplcursors
需要使用圖形畫布。所以它只能在畫布被定義后使用。所以該代碼行需要在定義之后出現(xiàn)FigureCanvasTkAgg
。
完整代碼:
import tkinter
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg, NavigationToolbar2Tk)
# Implement the default Matplotlib key bindings.
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
import numpy as np
import mplcursors
root = tkinter.Tk()
root.wm_title("Embedding in Tk")
t = np.arange(0, 3, .01)
fig = Figure()
ax = fig.add_subplot(111)
line = ax.plot(t, 2 * np.sin(2 * np.pi * t))
canvas = FigureCanvasTkAgg(fig, master=root)
mplcursors.cursor(line)
canvas.draw()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
def on_key_press(event):
print("you pressed {}".format(event.key))
key_press_handler(event, canvas, toolbar)
canvas.mpl_connect("key_press_event", on_key_press)
def _quit():
root.quit()
root.destroy()
button = tkinter.Button(master=root, text="Quit", command=_quit)
button.pack(side=tkinter.BOTTOM)
tkinter.mainloop()
添加回答
舉報(bào)