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