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

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

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

はじめに

前回はFigureCanvasTkAggとNavigationToolbar2Tkを使用して
matplotlibをtkinterへ埋め込んだ。
これにより見た目は結構リッチな感じにはなってきた。

今回からは割と細かいウィジットの話に移行する。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

次のウィジットは?

太郎くん
太郎くん

次は何を配置する?

フクさん
フクさん

まぁチェックボックス関連かなー。

太郎くん
太郎くん

確か5個くらいあったよね・・・。

フクさん
フクさん

まぁ数は大した問題ではないな。
5個分コピペして必要なとこだけ書き換えればOKだ。

太郎くん
太郎くん

いや、まぁそうなんだろうけど。

チェックボックスの配置

フクさん
フクさん

まずは1個配置してみよう。

太郎くん
太郎くん

そうだね。
それで一回どんな感じになるのかは確認しておきたい。

フクさん
フクさん

以下のコードになる。

scalbln = tkinter.BooleanVar()
scalbln.set(True)
chk = tkinter.Checkbutton(root, variable=scalbln, text="Enable Scale bar")
chk.place(x=0, y=10)
太郎くん
太郎くん

お、確かにチェックボックスが増えた!

tkinterでチェックボックス追加、Enable Cpu Load、DC Motor Control、target[rad/s]、voltage[V]、speed[rad/s]、loadtorqueStep.tau[N m]、cyrrent[A]、cpu_load[ms]

チェックボックス追加についての解説

太郎くん
太郎くん

コード上の確認だけど、
scalbln = tkinter.BooleanVar()
ってのはなに?

フクさん
フクさん

チェックボックスのON/OFFを受け取るための変数を作成してるんだよ。

太郎くん
太郎くん

なるほど。
それで、3行目のCheckbuttonに渡してるのか。
つまりscalblnを参照すればチェック状態が分かると。

太郎くん
太郎くん

scalbln.set(True)
ってのはチェック状態を指定してるのかな?
この場合だとチェックが入ってる状態になるのだと思うのだけど。

フクさん
フクさん

そのとおり。

太郎くん
太郎くん

最後のplaceは座標指定で配置してるやつだね。

一気にチェックボックス群を配置

フクさん
フクさん

というわけで、残りのチェックボックスも配置してしまおう。

cpuloadbln = tkinter.BooleanVar()
cpuloadbln.set(False)
chk = tkinter.Checkbutton(root, variable=cpuloadbln, text="Enable Cpu Load")
chk.place(x=0, y=30)

pausebln = tkinter.BooleanVar()
pausebln.set(False)
chk = tkinter.Checkbutton(root, variable=pausebln, text="pause")
chk.place(x=0, y=50)

sinbln = tkinter.BooleanVar()
sinbln.set(False)
chk = tkinter.Checkbutton(root, variable=sinbln, text="sin wave")
chk.place(x=0, y=70)

sawtoothbln = tkinter.BooleanVar()
sawtoothbln.set(False)
chk = tkinter.Checkbutton(root, variable=sawtoothbln, text="Sawtooth wave")
chk.place(x=0, y=90)
太郎くん
太郎くん

一応GUI側も確認

tkinterでチェックボックス追加、Enable Cpu Load、pause、sin wave、Sawtooth wave、DC Motor Control、target[rad/s]、voltage[V]、speed[rad/s]、loadtorqueStep.tau[N m]、cyrrent[A]、cpu_load[ms]
太郎くん
太郎くん

着実に強化されて行ってる感が良いねー。

まとめ

フクさん
フクさん

まとめだよ。

  • チェックボックスの配置。
    • チェック状態を確認するための変数を用意し、ウィジット生成時に渡しておく。
      • この変数を見ればチェック状態が分かる。
    • チェック状態をPython側から変更することも可能。
    • placeで座標指定して配置。
  • 同様の処理を必要なチェックボックス分実施。
    • GUI上でも設置されていることを確認。

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

コメント

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