#!/usr/bin/python3 from tkinter import * from tkinter import ttk from tkinter.ttk import * from tkinter.font import Font from tkinter import messagebox import subprocess import time import os # --- default --- sub_file = "sub_default_dir.py" chdir = "/home/pi/bin/app_menu/" # full path # --- Listbox selection def select_selection(): global a a = "" for i in lb.curselection(): a = lb.get(i) if not a: messagebox.showinfo('menu', 'Select menu !') return else: subprocess.run(chdir + a + " &", shell=True) root.quit() # label def label_1(): label = ttk.Label(frame0, text = sub_file, background=label_bg, foreground=label_fg) label.grid(row=0,column=1) # quit def quit_click(): root.quit() # --- main --- if __name__ == '__main__': root = Tk() root.title('sub dir') # Font smallfont = Font(family="Helvetica",size=10) root.option_add("*Font", smallfont) # Frame as Widget Container frame0 = ttk.Frame(root, padding=0) frame0.grid() frame1 = ttk.Frame(root, padding=0) frame1.grid() frame2 = ttk.Frame(root, padding=5) frame2.grid() # label label_bg='#469290' # label color label_fg='#ffffff' # text color label = ttk.Label( frame0, text = ' ' * 56, # length background=label_bg, foreground=label_fg) label.grid(row=0,column=1) # to label_1 label_1() # Listbox (menu) os.chdir(chdir) menu = ("ls ") # edit #menu = ("ls | grep sub.*dir") menu = (subprocess.Popen(menu, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8') v1 = StringVar(value=menu) lb = Listbox(frame1, listvariable=v1,width=26,height=10) lb.grid(row=0, column=0) # Scrollbar y scrollbar = ttk.Scrollbar(frame1, orient=VERTICAL, command=lb.yview) lb['yscrollcommand'] = scrollbar.set scrollbar.grid(row=0,column=1,sticky=(N,S)) # Butoon color style = Style() style.configure('TButton', font=('Helvetica', 10), background='#A4DCBF') style.configure('R.TButton', font=('Helvetica', 10), background='#E6C0D4') style.configure('G.TButton', font=('Helvetica', 10), background='#A4DCBF') style.configure('B.TButton', font=('Helvetica', 10), background='#A2CCE7') style.configure('L.TButton', font=('Helvetica', 10), background='#C6C6C6') style.configure('Y.TButton', font=('Helvetica', 10), background='#FFEFD5') # Button frame2 button = ttk.Button(frame2, text='RUN', width=12, style='TButton', command=select_selection) button.grid(row=0, column=0, columnspan=1) button = ttk.Button(frame2, text='EXIT', width=12, style='Y.TButton', command=quit_click) button.grid(row=0, column=1, columnspan=1) root.mainloop()