DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Simple Dialogs W Python

08.17.2010
| 6263 views |
  • submit to reddit
        Code for creating simple dir and file selectors using functions
that are built in to python. The python 2.5 docs are missing info
on simple dialogs in python. These dialogs are complete Tkinter
widgets designed to get simple information.

You can learn more about these dialogs by inspecting the
file in /python/Lib/lib-tk  (in python 2.5)

Some of this code is a copy of the code from:

http://code.activestate.com/recipes/438123-file-tkinter-dialogs/

with the suggestions in the comments added. The reason I copied it here
is to keep all the snippets I use in one place.

All credit goes to the original author: Sébastien Sauvage

# ======== Select a directory:

import Tkinter, tkFileDialog, tkMessageBox, tkSimpleDialog

root = Tkinter.Tk()
root.withdraw()
dirname = tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory')
if len(dirname ) > 0:
    print "You chose %s" % dirname 


# ======== Select a file for opening:
import Tkinter,tkFileDialog

root = Tkinter.Tk()
root.withdraw()
file = tkFileDialog.askopenfile(parent=root,mode='rb',title='Choose a file')
if file != None:
    data = file.read()
    file.close()
    print "I got %d bytes from this file." % len(data)


# ======== "Save as" dialog:
import Tkinter,tkFileDialog

myFormats = [
    ('Windows Bitmap','*.bmp'),
    ('Portable Network Graphics','*.png'),
    ('JPEG / JFIF','*.jpg'),
    ('CompuServer GIF','*.gif'),
    ]

root = Tkinter.Tk()
root.withdraw()
fileName = tkFileDialog.asksaveasfilename(parent=root,filetypes=myFormats ,title="Save the image as...")
if len(fileName ) > 0:
    print "Now saving under %s" % nomFichier

# ======== Message boxes
root = Tkinter.Tk()
root.withdraw()
x=tkMessageBox.askquestion(title='Test',message='A user prompt') # has yes and no buttons returns strings "yes" or "no"
x=tkMessageBox.askyesno(title='Test',message='A user prompt')    # has yes and no buttons returns True False
x=tkMessageBox.askokcancel(title='Test',message='A user prompt') # returns True False
x=tkMessageBox.askretrycancel(title='Test',message='A user prompt')  # returns True False

# ======== Data Entry Dialogs
root = Tkinter.Tk()
root.withdraw()
x=tkSimpleDialog.askstring('Test', 'Enter string: ')  # has OK and Cancel buttons - returns None on Cancel
x=tkSimpleDialog.askinteger('Test', 'Enter an integer: ')
x=tkSimpleDialog.askfloat('Test', 'Enter an float: ')