PR

はじめてのTkinter

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

立プロ

新卒でメーカーに入り、10年間組み込みの現場で設計を行う。
今は個人事業主として自作の組み込み機器開発や、エージェント様に紹介いただき業務委託を行っています。
C,C#,JavaScript, Vue, PHP, VBA, GAS, Kotlinなど、扱う言語が増えゆく日々。

立プロをフォローする

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