Elecrow3.5インチTFT LCD ディスプレイを使ってる時にリモートからTkinterを使う

投稿者: | 2018-02-12

概要

前回記事の続き。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に乗せてなんかの専用端末(リモコンとか)にするなどして面白いものが作れそう。