#!/usr/bin/env python3 # -*- coding: utf-8 -*- # 00infoLCDTK.py # # called by # # /home/pi/autostart.sh # dev/test/run with: # sudo -i -u pi DISPLAY=:0.0 /usr/bin/python3 /home/admin/00infoLCDTK.py import os import sys import json import logging import logging.config import tkinter as tk COLOR = "black" WINFO = None log = logging.getLogger() def setup_logging(default_path='00infoLCDw.json'): """Setup logging configuration""" path = default_path if os.path.exists(path): with open(path, 'rt') as f: config = json.load(f) logging.config.dictConfig(config) else: # if $default_path does not exist use the following default log setup default_config_as_json = """ { "version": 1, "disable_existing_loggers": false, "formatters": { "simple": { "format": "%(asctime)s - %(levelname)s - %(message)s" }, "extended": { "format": "%(asctime)s - %(name)s - %(levelname)s - %(module)s:%(lineno)d - %(message)s" } }, "handlers": { "console": { "class": "logging.StreamHandler", "level": "INFO", "formatter": "simple", "stream": "ext://sys.stdout" }, "file_handler": { "class": "logging.handlers.RotatingFileHandler", "level": "DEBUG", "formatter": "extended", "filename": "00infoLCDTK.log", "maxBytes": 10485760, "backupCount": 0, "encoding": "utf8" } }, "loggers": { "infoblitz": { "level": "INFO", "handlers": ["console", "file_handler"], "propagate": "no" } }, "root": { "level": "INFO", "handlers": ["console", "file_handler"] } } """ config = json.loads(default_config_as_json) logging.config.dictConfig(config) def callback_b1(): global WINFO log.info("clicked b1") if sys.platform != "win32": os.system("xterm -fn fixed -into %d +sb -hold /home/admin/00infoLCD.sh &" % WINFO) def callback_b2(): global WINFO log.info("clicked b2") if sys.platform != "win32": os.system("xterm -fn fixed -into %d +sb -hold /home/admin/XXbutton2.sh &" % WINFO) def callback_b4(): global WINFO log.info("clicked b4") if sys.platform != "win32": os.system("xterm -fn fixed -into %d +sb -hold /home/admin/XXshutdown.sh &" % WINFO) def main(): global WINFO setup_logging() log.info("Starting 00infoLCDTK.py") root = tk.Tk() root.config(bg=COLOR) root.overrideredirect(1) root.geometry("480x320+0+0") root.title("RaspiBlitz 1.x") entry = tk.Entry(root) entry.config(bg=COLOR, highlightbackground=COLOR) frame1 = tk.Frame(entry, width=60, background="black") frame2 = tk.Frame(entry, width=420, background="grey") button1 = tk.Button(frame1, text='\u0397', fg='black', command=callback_b1) button2 = tk.Button(frame1, text='\u0399', fg='black', command=callback_b2) label3 = tk.Label(frame1, text='1.x', bg=COLOR, fg='white') button4 = tk.Button(frame1, text='\N{BLACK CIRCLE}', fg='red', command=callback_b4) button1.pack(pady=24) button2.pack(pady=24) label3.pack(pady=24) button4.pack(pady=24) entry.pack(side="bottom", fill="x") frame1.pack(side="left", fill="both", expand=True) frame2.pack(side="right", fill="both", expand=True) WINFO = frame2.winfo_id() if sys.platform != "win32": os.system("xterm -fn fixed -into %d +sb -hold /home/admin/00infoLCD.sh &" % WINFO) root.mainloop() if __name__ == '__main__': main()