PR

はじめてのTkinter

この記事では、マイコンをpyserialで制御する方法をまとめます。

立プロ

姫野 秀徳(ひめの ひでのり)
組み込みエンジニア。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutuber。

立プロをフォローする

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を入れてやることで、直ちにイベント発生して画面に反映されました。

コメント

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