前提・実現したいこと
数値を入力しグラフを同じウィンドウ内に表示させる下の図のようなGUIをtkinterを用いて作りたい
また,数値を再度入力するとグラフを更新し,グラフを名前をつけて保存したい.
発生している問題・エラーメッセージ
ウィンドウ内にmatplotlibにて作成したグラフを埋め込めない
該当のソースコード
python
1 2 3 4 5import numpy as np 6import matplotlib.pyplot as plt 7from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk) 8import tkinter as tk 9import tkinter.ttk as ttk 10from matplotlib.figure import Figure 11from matplotlib.backend_bases import key_press_handler 12 13 14 15 16root = tk.Tk() 17root.title("tkinter application") 18root.geometry("1000x600") 19 20lbl_1 = ttk.Label(root,text="tの値") 21lbl_1.place(x=30, y=10) 22txt = tk.Entry(root,width=20) 23txt.place(x=90, y=10) 24 25btn_1 = ttk.Button(root, text="OK") 26btn_1.place(x=100, y=40) 27def btn_1_click(): 28 29 l = float (txt.get()) 30 print (l) 31 32 x = np.arange(0, 1, 0.001) 33 y1 = np.sin(l*x) 34 y2 = np.cos(l*x) 35 36 fig1 = Figure(figsize=(5, 4), dpi=100) 37 fig2 = Figure(figsize=(5, 4), dpi=100) 38 39 fig1.add_subplot().plot(x, y1) 40 fig2.add_subplot().plot(x, y2) 41 42 43 canvas1 = FigureCanvasTkAgg(fig1, master=root) 44 canvas2 = FigureCanvasTkAgg(fig2, master=root)# A tk.DrawingArea. 45 canvas1.draw() 46 canvas2.draw() 47 toolbar1 = NavigationToolbar2Tk(canvas1, root, pack_toolbar=False) 48 toolbar1.update() 49 toolbar2 = NavigationToolbar2Tk(canvas2, root, pack_toolbar=False) 50 toolbar2.update() 51 52 canvas1.mpl_connect( 53 "key_press_event", lambda event: print(f"you pressed {event.key}")) 54 canvas1.mpl_connect("key_press_event", key_press_handler) 55 56 canvas1.mpl_connect( 57 "key_press_event", lambda event: print(f"you pressed {event.key}")) 58 canvas1.mpl_connect("key_press_event", key_press_handler) 59 60button = tk.Button(master=root, text="Quit", command=root.quit) 61btn_1["command"] = btn_1_click 62 63 64root.mainloop()
### 試したこと FigureCanvasTkAggにて作成を試みたができなかった ### 補足情報(FW/ツールのバージョンなど) Python 初心者ですがよろしくお願い致します.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/01 16:40
2021/08/01 23:41
2021/08/01 23:51 編集
2021/08/11 09:00