目次
PythonでちょっとGUI作りたい
ArduinoやESP32とPCの通信とか、Raspberry Piなどで、ちょっとした画面入出力GUIを作りたい時に。。何がいいかな?と。。Qtとかもあるんですが、ほんとちょっとした時に使うようには、ちょっとめんどくさいの。。 で。。 標準ライブラリとして入っているtkinterについてのメモ
ちなみに、Python用のGUIってこんなにたくさんのモジュールやツール類があります。
https://wiki.python.org/moin/GuiProgramming
tkinter
Python 3.9のtkinterのDoccument
https://docs.python.org/3.9/library/tkinter.html#tkinter-modules
https://docs.python.org/3.9/library/tk.html
昔のVBにかなり近い感じ。。簡単に表示するだけならこれで十分
tkとttkで、ウィジェットが違ったりするので、覚えるの大変かもだけど。。使う時しか覚えてないし(笑)
CTCのこの記事がわりと良さそうです。
から。。
どんな画面できるかを知るのに。。これ全部読むの大変なので。。
GUIを作るためのGUI(笑)
昔のVBにもついてましたよね。こういうの。。
https://github.com/alejandroautalan/pygubu
https://github.com/alejandroautalan/pygubu-designer
どちらも、condaからはインストールできないので、Anacondaで一つenvironmentをコピーして作っておいて、その環境の中から、pipでインストールしました。
使い方は、こちら
ディレクトリがどこかで、起動させるところ違うけど。。僕の場合は、
C:\Users\ユーザー名\anaconda3\envs\Anaconda3pygubu\Scripts\pygubu-designer.exe
でした。
pygubu-designer の exampleを見る といいですね。
Filepathを見る画面作る例 pathchooserdemo.ui を読み込んで
Previewのメニューから Preview in Top level F5 をやって 動かした状況を見て、三角ボタンを押した時の様子。 ファイルセレクトができる画面がでてきますよね。
これを Code タブ で application か code か widgetかを選んで、Generateボタンを押すと、コードかできます。
これを、コピペすれば作れます。。
少なくとも。。できた気になります(笑)
TIPS集
リンク
https://www.python-beginners.com/archive/category/Python-tkinter
https://docs.python.org/3.9/library/tk.html
Comboboxに、セレクトされる値を入れる
comport_now はList形式 で 文字の場合
comport_now =[“COM1″,”COM2″,”COM3”] とかの場合 Class Newproject でcombobox_compが定義されているとした場合
app = NewprojectApp() app.combobox_comp.values= tk.StringVar() app.combobox_comp["values"]=comport_now
app.combobox_comp.set(”値”)
では、1個しか入れられないみたい。そういう使い方みたいです。
COMポート・Serial 通信は、こちらがわかりやすい
https://tanudon.work/499/#toc2
Event type ボタンを押したり、Comboboxを選んだり
import tkinter as tk print(tk.EventType.__members__)
とすると、出てきます。
Comboboxとか、ttkにはまた特別なバーチャルイベントがあるのでそちらは、元のドキュメントを参照すると書いてあります。
https://docs.python.org/3/library/tkinter.ttk.html#virtual-events
PyserialとTkinterのサンプル
https://github.com/tom2rd/PythonTest/blob/main/tkinterpyserialtest.py
pygubu いいですね。私もよく使っています。Tkinterに関しては現時点でこれがBestかと思います。
もっといいのが出たら、教えてください(笑)