この記事では、マイコンをpyserialで制御する方法をまとめます。
Tkinterとは
pyserialは、Python言語用のシリアル通信ライブラリです。
pyserialを使うと、Pythonプログラムからシリアルポートを開いたり、データを送受信したりすることができます。
環境構築
パソコンにpyserialをインストールする必要があります。
sudo apt-get install python3-tk
sudo apt install python3-pip
サンプルコード
はじめにサンプルを示します。
import tkinter as tk
def button_click():
label.config(text="Button Clicked")
root = tk.Tk()
root.title("Simple GUI")
# ウィンドウサイズを設定
root.geometry("400x300")
label = tk.Label(root, text="Hello, World!")
label.pack()
button = tk.Button(root, text="Click Me", command=button_click)
button.pack()
root.mainloop()
んー、かなり簡単な記述で処理できるんですねえ。
つまずいたポイント
以下、設計でつまずいた点。
packやconfigなど表示処理が直ちに反映されない
def func():
label.config(text="aaa")
btn.pack_forget()
while True:
#なにかする
break
上記のような処理があった場合、whileを抜けないとconfigやpack_forgetが画面上に反映されませんでした。
どうも、こうしたイベント発生は処理を抜けた後のmainloop()にて制御されているようです。
処理の後直ちに反映させるにはupdate関数を用います。
def func():
label.config(text="aaa")
label.update()
btn.pack_forget()
btn.update()
while True:
#なにかする
break
updateを入れてやることで、直ちにイベント発生して画面に反映されました。
コメント