execute_commands_old.py

# =========================================================
# Execute System Commands
# =========================================================
# This script does not resize correctly
# =========================================================

from tkinter import *            # Python 3
##from Tkinter import *          # Python 2

import os, string, sys

# ---------------------------------------------------------
# global variables
# ---------------------------------------------------------

buttonFont  = ('arial',   12)
displayFont = ('Courier', 14) 

# ---------------------------------------------------------
# Tk root
# ---------------------------------------------------------

root = Tk()
root.title('Execute System Commands')

# ---------------------------------------------------------
# button callback functions
# ---------------------------------------------------------

def execCallback():
    clearResultsCallback()
    c = cmd.get('0.0',END)
    c = c.replace('\n',' ') + ' 2>&1'
    ##print('command: {}'.format(c))
    for l in os.popen(c).readlines():
        results.insert(END,l)
        results.see(END)

def quitCallback():
    sys.exit() 

def clearCommandCallback():
    cmd.delete('0.0',END)

def clearResultsCallback():
    results.delete('0.0',END)

def displayMessage(m):
    results.insert(END,m)
    results.see(END)

# ---------------------------------------------------------
# 
# ---------------------------------------------------------

#--- frame to hold everything

f = Frame(root, relief='flat', padx=4, pady=4)
##f = Frame(root, relief='flat', bg='red', padx=4, pady=4)

# --- command text window

cmd = Text(f, font=displayFont, relief='groove',
        borderwidth=2, width=80, height=5)
##cmd = Text(f, font=displayFont, bg='light blue',
##        relief='groove', width=80, height=5)
cmd.grid(row=0, column=0, sticky=N+S+E+W)

# --- buttons

##fb1 = Frame(f, relief='flat')
fb1 = Frame(f, relief='groove', borderwidth=2)

b1 = Button(fb1, text='Clear Command', font=buttonFont,
        command=clearCommandCallback)
b2 = Button(fb1, text='Execute Command', font=buttonFont,
        command=execCallback)
b3 = Button(fb1, text = 'Clear Results', font=buttonFont,
        command=clearResultsCallback)

# --- results text window

results = Text(f, font=displayFont, relief='groove',
        borderwidth=2, width=80, height=20)

# --- quit button

##fb2 = Frame(f, relief='flat')
fb2 = Frame(f, relief='groove', borderwidth=2)

b4 = Button(fb2, text='Quit', font=buttonFont,
        command=quitCallback)

# --- rregister with the geometry manager 

b1.grid(row=0, column=0)
b2.grid(row=0, column=1)
b3.grid(row=0, column=2)

fb1.grid(row=1, column=0, columnspan=3)

results.grid(row=3, column=0, columnspan=3)

b4.grid(row=0,column=0)

fb2.grid(row=4, column=0, columnspan=3)

f.grid(row=0, column=0)

# -- main loop

root.mainloop()