Python GUI programming using drag and drop, also incorporating stdout redirect Python GUI programming using drag and drop, also incorporating stdout redirect tkinter tkinter

Python GUI programming using drag and drop, also incorporating stdout redirect


If you want to use Tkinter:

from Tkinter import *import tkFileDialog class Redir(object):    # This is what we're using for the redirect, it needs a text box    def __init__(self, textbox):        self.textbox = textbox        self.textbox.config(state=NORMAL)        self.fileno = sys.stdout.fileno    def write(self, message):        # When you set this up as redirect it needs a write method as the        # stdin/out will be looking to write to somewhere!        self.textbox.insert(END, str(message))def askopenfilename():    """ Prints the selected files name """    # get filename, this is the bit that opens up the dialog box this will    # return a string of the file name you have clicked on.    filename = tkFileDialog.askopenfilename()    if filename:        # Will print the file name to the text box        print filenameif __name__ == '__main__':    # Make the root window    root = Tk()    # Make a button to get the file name    # The method the button executes is the askopenfilename from above    # You don't use askopenfilename() because you only want to bind the button    # to the function, then the button calls the function.    button = Button(root, text='GetFileName', command=askopenfilename)    # this puts the button at the top in the middle    button.grid(row=1, column=1)    # Make a scroll bar so we can follow the text if it goes off a single box    scrollbar = Scrollbar(root, orient=VERTICAL)    # This puts the scrollbar on the right handside    scrollbar.grid(row=2, column=3, sticky=N+S+E)    # Make a text box to hold the text    textbox = Text(root,font=("Helvetica",8),state=DISABLED, yscrollcommand=scrollbar.set, wrap=WORD)    # This puts the text box on the left hand side    textbox.grid(row=2, column=0, columnspan=3, sticky=N+S+W+E)    # Configure the scroll bar to stroll with the text box!    scrollbar.config(command=textbox.yview)    #Set up the redirect     stdre = Redir(textbox)    # Redirect stdout, stdout is where the standard messages are ouput    sys.stdout = stdre    # Redirect stderr, stderr is where the errors are printed too!    sys.stderr = stdre    # Print hello so we can see the redirect is working!    print "hello"    # Start the application mainloop    root.mainloop()

What this does is creates a window with a button and a text box, with stdout redirect.

Currently in Tkinter you can't drag and drop files on to the open tk window(you can if you use tkdnd), so I have included a different way of getting the path of a file.

The way I have included to select a file is the askopenfilename dialog from tkFileDialog, this opens up a file browser and the path file selected is returned as a string.

If you have any questions or this doesn't quite do what your looking for please leave a comment!


Have a look at GTK. It is a really powerful library. Not the simplest, that's a fact, but once you get to understand how things work, it becomes much easier.Here's the official tutorial

If oyu are still using Python2, I think you should use PyGTK but it has been replaced by gl (which is described in the above tutorial). A good tutorial for PyGTK can be found here.

For a static interface, you can use glade which produces XML files that are then read by GTKBuilder to create the "real" interface. The first tutorial that I've found is available here