バックナンバーはこちら。
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]](https://www.simulationroom999.com/blog/wp-content/uploads/2021/09/02_tkinterでチェックボックス追加.png)
チェックボックス追加についての解説

コード上の確認だけど、
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]](https://www.simulationroom999.com/blog/wp-content/uploads/2021/09/03_tkinterでチェックボックス追加全部.png)

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

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