Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Checkins
r67240 - sandbox/trunk/tkinter-polo/src/Dialog.py
 

Index | Next | Previous | View Flat


python-checkins at python

Nov 16, 2008, 4:14 PM


Views: 75
Permalink
r67240 - sandbox/trunk/tkinter-polo/src/Dialog.py

Author: guilherme.polo
Date: Mon Nov 17 01:14:07 2008
New Revision: 67240

Log:
Dropped usage of star import;

No need to check for TkVersion <= 3.6 since _tkinter enforces the need for
Tcl/Tk 8.2 at least;

Cleaned up the Dialog class;

Correctly converts the reply to an integer, checking for the possibility of
receiving a tuple;

Updated example to suggest the more appropriate use of the Dialog.


Modified:
sandbox/trunk/tkinter-polo/src/Dialog.py

Modified: sandbox/trunk/tkinter-polo/src/Dialog.py
==============================================================================
--- sandbox/trunk/tkinter-polo/src/Dialog.py (original)
+++ sandbox/trunk/tkinter-polo/src/Dialog.py Mon Nov 17 01:14:07 2008
@@ -1,49 +1,63 @@
-# dialog.py -- Tkinter interface to the tk_dialog script.
+"""
+Tkinter interface to the command tk_dialog in tk.
+"""

-from Tkinter import *
-from Tkinter import _cnfmerge
+__all__ = ['Dialog', 'DIALOG_ICON']

-if TkVersion <= 3.6:
- DIALOG_ICON = 'warning'
-else:
- DIALOG_ICON = 'questhead'
+import Tkinter

+DIALOG_ICON = 'questhead'
+
+class Dialog(Tkinter.Toplevel):
+ """
+ Create modal dialog and wait for response.
+ """
+ widgetname = 'tk_dialog'

-class Dialog(Widget):
def __init__(self, master=None, cnf={}, **kw):
- cnf = _cnfmerge((cnf, kw))
- self.widgetName = '__dialog__'
- Widget._setup(self, master, cnf)
- self.num = self.tk.getint(
- self.tk.call(
- 'tk_dialog', self._w,
- cnf['title'], cnf['text'],
- cnf['bitmap'], cnf['default'],
- *cnf['strings']))
- try: Widget.destroy(self)
- except TclError: pass
- def destroy(self): pass
-
-def _test():
- d = Dialog(None, {'title': 'File Modified',
- 'text':
- 'File "Python.h" has been modified'
- ' since the last time it was saved.'
- ' Do you want to save it before'
- ' exiting the application.',
- 'bitmap': DIALOG_ICON,
- 'default': 0,
- 'strings': ('Save File',
- 'Discard Changes',
- 'Return to Editor')})
- print d.num
+ """Construct a tk_dialog with the parent master and the parameters
+ in kw.

+ kw must contain the following keys:
+ title, text, bitmap, default, strings
+ """
+ Tkinter.Toplevel.__init__(self, master)
+ kw.update(cnf)
+ args = tuple(kw[arg] for arg in ('title', 'text', 'bitmap', 'default'))
+ strings = kw['strings']
+
+ result = self.tk.call(self.widgetname, self._w, *(args + strings))
+ if isinstance(result, tuple):
+ # We may receive a tuple with a single Tcl_Obj, so convert that to
+ # a string before continuing.
+ result = str(result[0])
+ self.num = int(result)
+
+ try:
+ self.destroy()
+ except Tkinter.TclError:
+ pass
+
+
+def example():
+ def test_dialog():
+ d = Dialog(
+ title='File Modified',
+ text=("File 'Python.h' has been modified since the last time "
+ "it was saved. Do you want to save it before exiting "
+ "the application ?"),
+ bitmap=DIALOG_ICON,
+ strings=('Save File', 'Discard Changes', 'Return to Editor'),
+ default=0
+ )
+ print d.num
+
+ from Tkinter import Button
+ test = Button(text='Test', command=test_dialog)
+ quit = Button(text='Quit', command=test.quit)
+ test.pack()
+ quit.pack()
+ test.mainloop()

if __name__ == '__main__':
- t = Button(None, {'text': 'Test',
- 'command': _test,
- Pack: {}})
- q = Button(None, {'text': 'Quit',
- 'command': t.quit,
- Pack: {}})
- t.mainloop()
+ example()
_______________________________________________
Python-checkins mailing list
Python-checkins[at]python.org
http://mail.python.org/mailman/listinfo/python-checkins

Subject User Time
r67240 - sandbox/trunk/tkinter-polo/src/Dialog.py python-checkins at python Nov 16, 2008, 4:14 PM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.