Learning Tkinter

Mike Driscoll kyosohma at gmail.com
Wed Apr 16 09:24:18 EDT 2008


On Apr 16, 7:46 am, "Doran, Harold" <HDo... at air.org> wrote:
> I am currently reading An Intro to Tkinter (1999) by F. Lundh. This doc
> was published in 1999 and I wonder if there is a more recent version.
> I've googled a bit and this version is the one I keep finding. I like
> how this document is organized and also how it provides the code with
> visuals of what should appear on the screen. If there are other docs I
> should read, please let me know.


There's some good Tkinter coverage in Lutz's tome, "Programming Python
3rd Ed." and it also shows how to do a search for a file across your
file system, iirc.


>
> Second, I am trying to work through a couple of the examples and make
> some small tweaks as I go to see how new things can work. In the first
> case, I have copied the code in the book to see how the menu works and
> are created as in the example menu.py below. I see how menus are created
> and how the command option is used to call the function callback.
>
> # menu.py
> from Tkinter import *
>
> def callback():
>     print "called the callback!"
>
> root = Tk()
>
> # create a menu
> menu = Menu(root)
> root.config(menu=menu)
>
> filemenu = Menu(menu)
> menu.add_cascade(label="File", menu=filemenu)
> filemenu.add_command(label="New", command=harold)
> filemenu.add_command(label="Open...", command=callback)
> filemenu.add_separator()
> filemenu.add_command(label="Exit", command=callback)
>
> helpmenu = Menu(menu)
> menu.add_cascade(label="Help", menu=helpmenu)
> helpmenu.add_command(label="About...", command=callback)
>
> mainloop()
>
> However, I now want to incorporate a basic python program with a
> command. Say I have a simple program called test.py
>
> # test.py
> filename = raw_input("Please enter the file you want to open: ")
> new_file = raw_input("Save the output file as: ")
>
> f = open(new_file, 'w')
> new = open(filename, 'r')
>
> for line in new:
>         x = line.split('\t')
>         print >> f, x[0],':', x[1]
> f.close()
>
> To make this example complete assume I have a text file like this
>
> # data.txt
> 1       one
> 2       two
> 3       three
> 4       four
>
> So, the user currently just follows directions on the screen, enters the
> file names, and I get what I want. I'd like to try experimenting with
> gui programming to see if the python programs I have written can be made
> even more user friendly. I currently use py2exe to create executables so
> that others in my organization can use these programs.
>
> In that spirit, say I want to have a menu option that allows the user to
> search their computer for this file, execute the python code and then
> save the result as a user-defined filename. So, I guess my questions are
> how do I associate the portion of code in menu.py
> "filemenu.add_command(label="Open...", command=callback)" with an
> operation that gives the user the ability to search the drives on their
> machine and then once they do let python execute the code in test.py?
>
> Many thanks,

It sounds like you want to run code from within your own program. This
would require embedding a Python interpreter, which is quite possible,
although I do not know how to do it. I would suggest that you just use
a Tkinter-created frame/window that allows the user to enter the
information into text controls rather than a command line type
interface. You could even use a "Browse" button and let the user
search for the file using a file dialog. Check out the sample code for
such a beast in the recipe linked below:

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/438123

If you do want to go the embedding route, you'll want to read the
following information linked below:

http://docs.python.org/api/embedding.html
http://www.python.org/doc/ext/embedding.html
http://www.ragestorm.net/tutorial?id=21
http://www.codeproject.com/KB/cpp/embedpython_1.aspx

Hope that gets you going.

Mike



More information about the Python-list mailing list