【PyFMI】最小構成のMBD事例 第2章 その113【リアルタイム描画⑦】

【PyFMI】最小構成のMBD事例 第2章 その113【リアルタイム描画⑦】 事例
【PyFMI】最小構成のMBD事例 第2章 その113【リアルタイム描画⑦】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

tkinterにmatplotlibの図(figure)を埋め込む準備を始めた。
図(figure)自体は従来通りのやり方でOK。

今回は
FigureCanvasTkAggを使用したtkinterへの図(figure)の埋め込み

NavigationToolbar2Tkを使用したメニューバーの埋め込み
をやってみる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

FigureCanvasTkAggを使用したtkinterへの図(figure)の埋め込み

フクさん
フクさん

前回、matplotlibの図(figure)を作ってあるはずなので、
それをtkinterに埋め込む

太郎くん
太郎くん

たしかFigureCanvasTkAggを使うんだよね。

フクさん
フクさん

そうそう。
早速やってみよう。

canvas = FigureCanvasTkAgg(fig, root)
canvas.get_tk_widget().pack(side = tkinter.RIGHT)
太郎くん
太郎くん

あ、メインウィンドウにmatplotlibが張り付いた!

tkinter上にmatplotlib、DC Motor Control、target[rad/s]、voltage[V]、speed[rad/s]、loadtorqueStep.tau[N m]、cyrrent[A]、cpu_load[ms]
太郎くん
太郎くん

2つ目のpack(side = tkinter.RIGHT)は何をしてるの?

フクさん
フクさん

該当ウィジットを右側に張り付ける指示だね。
RIGHTの他にLEFT、TOP、BOTTOMを指定できる。

メニューバーの埋め込み

フクさん
フクさん

引き続きmatplotlibのメニューバーを埋め込む

太郎くん
太郎くん

メニューバーはNavigationToolbar2Tkを使うんだよね。

フクさん
フクさん

その通り。
コードは以下になる。

toolbar=NavigationToolbar2Tk(canvas, root)
toolbar.place(x=0, y=h/2-40)
太郎くん
太郎くん

右下にメニューバーが配置された。

tkinter上にmatplotlibのメニューバー配置、DC Motor Control、target[rad/s]、voltage[V]、speed[rad/s]、loadtorqueStep.tau[N m]、cyrrent[A]、cpu_load[ms]
太郎くん
太郎くん

で、今度は
toolbar.place(x=0, y=h/2-40)
ってので配置場所を決めてる感じ?

フクさん
フクさん

そのとおり。
「h」は
以前
h = root.winfo_screenheight()
で取得したディスプレイの縦の長さで、
現在のメインウィンドウの縦の長さはh/2になってる。
そこから40ピクセル分上に配置してる感じだ。

太郎くん
太郎くん

座標はディスプレイの座標じゃなくてメインウィンドウ上の座標ってことでいいんだよね?

フクさん
フクさん

そうそう。
右上がx=0、y=0になってるので、座標を指定すれば好きな場所にウィジットを配置できる。

太郎くん
太郎くん

いやー、まだそれほど何かやったわけじゃないけど、
思ったよりもGUIがリッチになってきたねー。

フクさん
フクさん

まぁmatplotlibを埋め込んだからね。
それのおかげでリッチな感じには見えちゃうねー。

太郎くん
太郎くん

この調子でバンバンと追加していっちゃおう!

まとめ

フクさん
フクさん

まとめだよ。

  • FigureCanvasTkAggを使用してtkinterへmatplotlibを埋め込み。
    • pack(side = tkinter.RIGHT)でメインウィンドウの右端に接するよう配置。
  • NavigationToolbar2Tkを使用してメニューバー配置。
    • place(x=0, y=h/2-40)を使用して座標指定で配置。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました