【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をコピーしました