Show command line results in Tkinter text widget Show command line results in Tkinter text widget tkinter tkinter

Show command line results in Tkinter text widget


Based on this answer you can do it fairly simply with the below code:

import subprocess           # required for redirecting stdout to GUItry:    import Tkinter as tk    # required for the GUI python 2except:    import tkinter as tk    # required for the GUI python 3def redirect(module, method):    '''Redirects stdout from the method or function in module as a string.'''    proc = subprocess.Popen(["python", "-c",        "import " + module + ";" + module + "." + method + "()"], stdout=subprocess.PIPE)    out = proc.communicate()[0]    return out.decode('unicode_escape')def put_in_txt():    '''Puts the redirected string in a text.'''    txt.insert('1.0', redirect(module.get(), method.get()))if __name__ == '__main__':    root = tk.Tk()    txt = tk.Text(root)    module = tk.Entry(root)    method = tk.Entry(root)    btn = tk.Button(root, text="Redirect", command=put_in_txt)    #layout    txt.pack(fill='both', expand=True)    module.pack(fill='both', expand=True, side='left')    btn.pack(fill='both', expand=True, side='left')    method.pack(fill='both', expand=True, side='left')    root.mainloop()

given that the module is in the same directory. The code returns console output of a method or a function(rightmost entry) in a module(leftmost entry) as a string. It then puts that string in a Text field.


See this answer for Returning all methods/functions from a script without explicitly passing method names.