<<<小技ネタ>>>
sshから実行されるアプリからHDMI出力のMessageBoxを表示する。
まず、UIを取り扱うためにtkinterをインストールする。
$ sudo apt-get install python3-tk
動作チェック
まず、GUIから実行テスト
$ python -m tkinter
以下が表示されれば成功
$ python -m tkinter
Traceback (most recent call last):
File "/usr/local/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.6/tkinter/__main__.py", line 7, in <module>
main()
File "/usr/local/lib/python3.6/tkinter/__init__.py", line 3988, in _test
root = Tk()
File "/usr/local/lib/python3.6/tkinter/__init__.py", line 2023, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display ""
couldn't connect to displayと怒られてしまう。
sshは、CUIだから当たり前だ!
HDMIモニターに表示するにはどうしたらよいだろうか?
$ DISPLAY=:0 python -m tkinter
ディスプレイを指定するとHDMIに表示できる。
サンプルアプリを紹介しよう。
alert.py
# !/usr/local/bin/python3.6
# -*- coding:utf-8 -*-
import tkinter as tk,os,sys
import tkinter.font as font
os.environ['DISPLAY']=':0' #ディスプレイの出力先
class Message(tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
w=tk.Message(root,text=Msg,font=("", 60, "bold"))
w.pack(expand=1, fill="both")
if __name__ == '__main__':
root = tk.Tk()
root.title(sys.argv[1])
root.attributes("-zoomed", "1")
Msg=sys.argv[2]
app = Message(root)
while True: #イベントループ
try:
root.update()
except KeyboardInterrupt:
break
sys.exit()
実行させてみよう
実行権を付加する
$ sudo chmod 777 alert.py
./alert.py Alert CPU高温注意