概要
前回記事の続き。LCDディスプレイを被せているRaspi上でPython3のTkinterを使おうと思っていたら、ssh接続下の操作ではうまく起動してくれなかったのでその対処方法。
問題
適当な端末からRaspiにsshしているときは、Tkinterを使ったプログラムをそのまま叩いてもUIが生成されない。
原因
sshせずに直接Raspiを操作してTkinterを用いたプログラムを起動すれば正常に動作するが、sshでの接続では、DISPLAYという環境変数に値がセットされていない状態になる。TkinterはこのDISPLAY変数を必要としているらしく、別途セットしてやる必要がある。
解決方法
対象プログラムを起動するときにenvコマンドを叩いてDISPLAY情報を渡してあげる。
$ env DISPLAY=:0 python3 display.py
出ました。
何が良いか
わざわざUSBキーボードを持ち歩かなくてもRaspiを操作でき(これはsshの利点っぽい)、かつTkinterによる開発ができる。今回使っているLCDディスプレイはタッチパネル搭載なので、Raspiに乗せてなんかの専用端末(リモコンとか)にするなどして面白いものが作れそう。