バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はFigureCanvasTkAggとNavigationToolbar2Tkを使用して
matplotlibをtkinterへ埋め込んだ。
これにより見た目は結構リッチな感じにはなってきた。
今回からは割と細かいウィジットの話に移行する。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
次のウィジットは?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
次は何を配置する?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁチェックボックス関連かなー。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
確か5個くらいあったよね・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ数は大した問題ではないな。
5個分コピペして必要なとこだけ書き換えればOKだ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
いや、まぁそうなんだろうけど。
チェックボックスの配置
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まずは1個配置してみよう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そうだね。
それで一回どんな感じになるのかは確認しておきたい。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
以下のコードになる。
scalbln = tkinter.BooleanVar()
scalbln.set(True)
chk = tkinter.Checkbutton(root, variable=scalbln, text="Enable Scale bar")
chk.place(x=0, y=10)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
お、確かにチェックボックスが増えた!
![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)
チェックボックス追加についての解説
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
コード上の確認だけど、
scalbln = tkinter.BooleanVar()
ってのはなに?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
チェックボックスのON/OFFを受け取るための変数を作成してるんだよ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
なるほど。
それで、3行目のCheckbuttonに渡してるのか。
つまりscalblnを参照すればチェック状態が分かると。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
scalbln.set(True)
ってのはチェック状態を指定してるのかな?
この場合だとチェックが入ってる状態になるのだと思うのだけど。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
そのとおり。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
最後のplaceは座標指定で配置してるやつだね。
一気にチェックボックス群を配置
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
というわけで、残りのチェックボックスも配置してしまおう。
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)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
一応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)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
着実に強化されて行ってる感が良いねー。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- チェックボックスの配置。
- チェック状態を確認するための変数を用意し、ウィジット生成時に渡しておく。
- この変数を見ればチェック状態が分かる。
- チェック状態をPython側から変更することも可能。
- placeで座標指定して配置。
- チェック状態を確認するための変数を用意し、ウィジット生成時に渡しておく。
- 同様の処理を必要なチェックボックス分実施。
- GUI上でも設置されていることを確認。
バックナンバーはこちら。
コメント