PySimpleGUI/Demo_Script_Launcher.py

87 lines
3.2 KiB
Python
Raw Normal View History

import PySimpleGUI as sg
2018-08-30 00:50:10 +00:00
import glob
import ntpath
import subprocess
2018-08-30 00:50:10 +00:00
LOCATION_OF_YOUR_SCRIPTS = 'C:/Python/PycharmProjects/GooeyGUI/'
def Launcher1():
form = sg.FlexForm('Script launcher')
layout = [
[sg.Text('Script output....', size=(40, 1))],
[sg.Output(size=(88, 20), font='Courier 10')],
[sg.ReadFormButton('script1'), sg.ReadFormButton('script2'), sg.SimpleButton('EXIT')],
[sg.Text('Manual command', size=(15,1)), sg.InputText(focus=True), sg.ReadFormButton('Run', bind_return_key=True)]
]
form.Layout(layout)
# ---===--- Loop taking in user input and using it to query HowDoI --- #
while True:
(button, value) = form.Read()
if button == 'EXIT' or button is None:
break # exit button clicked
if button == 'script1':
2018-08-30 00:50:10 +00:00
execute_command_blocking('pip', 'list')
elif button == 'script2':
2018-08-30 00:50:10 +00:00
execute_command_blocking('python', '--version')
elif button == 'Run':
2018-08-30 00:50:10 +00:00
execute_command_blocking(value[0]) # send string without carriage return on end
2018-08-30 00:50:10 +00:00
# Execute the command. Will not see the output from the command until it completes.
def execute_command_blocking(command, *args):
try:
sp = subprocess.Popen([command,*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: pass
2018-08-30 00:50:10 +00:00
# Executes command and immediately returns. Will not see anything the script outputs
def execute_command_nonblocking(command, *args):
try:
sp = subprocess.Popen([command,*args], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except: pass
def Launcher2():
sg.ChangeLookAndFeel('GreenTan')
form = sg.FlexForm('Script launcher')
filelist = glob.glob(LOCATION_OF_YOUR_SCRIPTS+'*.py')
namesonly = []
for file in filelist:
namesonly.append(ntpath.basename(file))
layout = [
[sg.Text('Script output....', size=(40, 1))],
[sg.Listbox(values=namesonly, size=(30, 19), select_mode=sg.SELECT_MODE_EXTENDED, key='demolist'), sg.Output(size=(88, 20), font='Courier 10')],
[sg.ReadFormButton('Run'), sg.ReadFormButton('Shortcut 1'), sg.ReadFormButton('Fav Program'), sg.SimpleButton('EXIT')],
]
form.Layout(layout)
# ---===--- Loop taking in user input and using it to query HowDoI --- #
while True:
(button, value) = form.Read()
if button in ('EXIT', None):
break # exit button clicked
if button in ('Shortcut 1', 'Fav Program'):
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')
# copyfile(source, dest)
elif button is 'Run':
for index, file in enumerate(value['demolist']):
print('Launching %s'%file)
form.Refresh() # make the print appear immediately
execute_command_nonblocking(LOCATION_OF_YOUR_SCRIPTS + file)
if __name__ == '__main__':
2018-08-30 00:50:10 +00:00
Launcher2()