summaryrefslogtreecommitdiffstats
path: root/Lib/lib-tk
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-12-06 16:51:41 (GMT)
committerFred Drake <fdrake@acm.org>2001-12-06 16:51:41 (GMT)
commit6b04ffe9e59dc8df46f2d68646ed82cbbef0714c (patch)
treea94603073ca8aa569bd9d028ef090c013018d715 /Lib/lib-tk
parent22d35a7337d608d5eddb3b1934c96852f53a0f11 (diff)
downloadcpython-6b04ffe9e59dc8df46f2d68646ed82cbbef0714c.zip
cpython-6b04ffe9e59dc8df46f2d68646ed82cbbef0714c.tar.gz
cpython-6b04ffe9e59dc8df46f2d68646ed82cbbef0714c.tar.bz2
Be more careful about accessing attributes of the parent: if Tk has not been
initialized, this will be None, but the functions will still work (there will simply be a bogus parent on the screen). Allowing the parent to be None is useful when testing the functions from an interactive interpreter. Add an optional keyword paramter "show" to the _QueryString class; when given it is used to set the -show option to the entry widget. This allows passing show="*" or the like to askstring(), making it useful for requesting passwords/passphrases from the user. This closes SF bug #438517. Changed a docstring to be less font-lock-hostile.
Diffstat (limited to 'Lib/lib-tk')
-rw-r--r--Lib/lib-tk/tkSimpleDialog.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/Lib/lib-tk/tkSimpleDialog.py b/Lib/lib-tk/tkSimpleDialog.py
index 15ff544..3dac212 100644
--- a/Lib/lib-tk/tkSimpleDialog.py
+++ b/Lib/lib-tk/tkSimpleDialog.py
@@ -68,8 +68,9 @@ class Dialog(Toplevel):
self.protocol("WM_DELETE_WINDOW", self.cancel)
- self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
- parent.winfo_rooty()+50))
+ if self.parent is not None:
+ self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
+ parent.winfo_rooty()+50))
self.initial_focus.focus_set()
@@ -95,7 +96,7 @@ class Dialog(Toplevel):
def buttonbox(self):
'''add standard button box.
- override if you don't want the standard buttons
+ override if you do not want the standard buttons
'''
box = Frame(self)
@@ -129,7 +130,8 @@ class Dialog(Toplevel):
def cancel(self, event=None):
# put focus back to the parent window
- self.parent.focus_set()
+ if self.parent is not None:
+ self.parent.focus_set()
self.destroy()
#
@@ -270,6 +272,20 @@ def askfloat(title, prompt, **kw):
return d.result
class _QueryString(_QueryDialog):
+ def __init__(self, *args, **kw):
+ if kw.has_key("show"):
+ self.__show = kw["show"]
+ del kw["show"]
+ else:
+ self.__show = None
+ _QueryDialog.__init__(self, *args, **kw)
+
+ def body(self, master):
+ entry = _QueryDialog.body(self, master)
+ if self.__show is not None:
+ entry.configure(show=self.__show)
+ return entry
+
def getresult(self):
return self.entry.get()