PySimpleGUI/DemoPrograms/Demo_Script_Launcher.py

87 lines
2.7 KiB
Python
Raw Normal View History

2018-09-27 20:24:09 +00:00
#!/usr/bin/env python
import PySimpleGUI as sg
2018-08-30 00:50:10 +00:00
import glob
import ntpath
import subprocess
2018-09-08 03:23:45 +00:00
LOCATION_OF_YOUR_SCRIPTS = ''
2018-08-30 00:50:10 +00:00
# Execute the command. Will not see the output from the command until it completes.
2018-08-30 00:50:10 +00:00
def execute_command_blocking(command, *args):
2018-09-08 03:23:45 +00:00
expanded_args = []
for a in args:
expanded_args.append(a)
# expanded_args += a
try:
sp = subprocess.Popen([command, expanded_args], shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = sp.communicate()
if out:
print(out.decode("utf-8"))
if err:
print(err.decode("utf-8"))
except:
out = ''
return out
2018-08-30 00:50:10 +00:00
# Executes command and immediately returns. Will not see anything the script outputs
2018-08-30 00:50:10 +00:00
def execute_command_nonblocking(command, *args):
2018-09-08 03:23:45 +00:00
expanded_args = []
for a in args:
expanded_args += a
2018-08-30 00:50:10 +00:00
try:
sp = subprocess.Popen([command, expanded_args], shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except:
pass
2018-08-30 00:50:10 +00:00
def Launcher2():
2019-12-24 23:52:47 +00:00
sg.theme('GreenTan')
2018-08-30 00:50:10 +00:00
filelist = glob.glob(LOCATION_OF_YOUR_SCRIPTS+'*.py')
namesonly = []
for file in filelist:
namesonly.append(ntpath.basename(file))
layout = [
[sg.Listbox(values=namesonly, size=(30, 19),
select_mode=sg.SELECT_MODE_EXTENDED, key='demolist'),
sg.Output(size=(88, 20), font='Courier 10')],
[sg.CBox('Wait for program to complete', default=False, key='wait')],
[sg.Button('Run'), sg.Button('Shortcut 1'), sg.Button('Fav Program'), sg.Button('EXIT')],
]
2018-08-30 00:50:10 +00:00
window = sg.Window('Script launcher', layout)
2018-08-30 00:50:10 +00:00
2018-10-08 17:30:33 +00:00
# ---===--- Loop taking in user input --- #
2018-08-30 00:50:10 +00:00
while True:
event, values = window.read()
if event in ('EXIT', None):
2018-08-30 00:50:10 +00:00
break # exit button clicked
if event in ('Shortcut 1', 'Fav Program'):
2018-08-30 00:50:10 +00:00
print('Quickly launch your favorite programs using these shortcuts')
print('''
Or copy files to your github folder.
Or anything else you type on the command line''')
2018-08-30 00:50:10 +00:00
# copyfile(source, dest)
elif event == 'Run':
for index, file in enumerate(values['demolist']):
print('Launching %s' % file)
window.refresh() # make the print appear immediately
if values['wait']:
2018-08-30 01:00:08 +00:00
execute_command_blocking(LOCATION_OF_YOUR_SCRIPTS + file)
else:
execute_command_nonblocking(
LOCATION_OF_YOUR_SCRIPTS + file)
window.close()
2018-08-30 00:50:10 +00:00
if __name__ == '__main__':
2018-08-30 00:50:10 +00:00
Launcher2()