Mercurial > cpython-lru_cache-weakref
annotate Lib/tkinter/simpledialog.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | fd5166fdb978 |
| children |
| rev | line source |
|---|---|
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
1 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
2 # An Introduction to Tkinter |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
3 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
4 # Copyright (c) 1997 by Fredrik Lundh |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
5 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
6 # This copyright applies to Dialog, askinteger, askfloat and asktring |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
7 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
8 # fredrik@pythonware.com |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
9 # http://www.pythonware.com |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
10 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
11 """This modules handles dialog boxes. |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
13 It contains the following public symbols: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
14 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
15 SimpleDialog -- A simple but flexible modal dialog box |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
16 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
17 Dialog -- a base class for dialogs |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
18 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
19 askinteger -- get an integer from the user |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
20 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
21 askfloat -- get a float from the user |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
22 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
23 askstring -- get a string from the user |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
24 """ |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 |
|
47130
ef4cca2d6171
Tkinter, step 2: adapt imports.
Georg Brandl <georg@python.org>
parents:
47129
diff
changeset
|
26 from tkinter import * |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
27 from tkinter import messagebox |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
29 import tkinter # used at _QueryDialog for tkinter._default_root |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 class SimpleDialog: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 def __init__(self, master, |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
34 text='', buttons=[], default=None, cancel=None, |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
35 title=None, class_=None): |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
36 if class_: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
37 self.root = Toplevel(master, class_=class_) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
38 else: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
39 self.root = Toplevel(master) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
40 if title: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
41 self.root.title(title) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
42 self.root.iconname(title) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
43 self.message = Message(self.root, text=text, aspect=400) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
44 self.message.pack(expand=1, fill=BOTH) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
45 self.frame = Frame(self.root) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
46 self.frame.pack() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
47 self.num = default |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
48 self.cancel = cancel |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
49 self.default = default |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
50 self.root.bind('<Return>', self.return_event) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
51 for num in range(len(buttons)): |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
52 s = buttons[num] |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
53 b = Button(self.frame, text=s, |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
54 command=(lambda self=self, num=num: self.done(num))) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
55 if num == default: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
56 b.config(relief=RIDGE, borderwidth=8) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
57 b.pack(side=LEFT, fill=BOTH, expand=1) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
58 self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
59 self._set_transient(master) |
|
3757
15b1b03ade93
Don't use tktools, dummy! Reworded test message slightly.
Guido van Rossum <guido@python.org>
parents:
3688
diff
changeset
|
60 |
|
15b1b03ade93
Don't use tktools, dummy! Reworded test message slightly.
Guido van Rossum <guido@python.org>
parents:
3688
diff
changeset
|
61 def _set_transient(self, master, relx=0.5, rely=0.3): |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
62 widget = self.root |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
63 widget.withdraw() # Remain invisible while we figure out the geometry |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
64 widget.transient(master) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
65 widget.update_idletasks() # Actualize geometry information |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
66 if master.winfo_ismapped(): |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
67 m_width = master.winfo_width() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
68 m_height = master.winfo_height() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
69 m_x = master.winfo_rootx() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
70 m_y = master.winfo_rooty() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
71 else: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
72 m_width = master.winfo_screenwidth() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
73 m_height = master.winfo_screenheight() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
74 m_x = m_y = 0 |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
75 w_width = widget.winfo_reqwidth() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
76 w_height = widget.winfo_reqheight() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
77 x = m_x + (m_width - w_width) * relx |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
78 y = m_y + (m_height - w_height) * rely |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
79 if x+w_width > master.winfo_screenwidth(): |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
80 x = master.winfo_screenwidth() - w_width |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
81 elif x < 0: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
82 x = 0 |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
83 if y+w_height > master.winfo_screenheight(): |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
84 y = master.winfo_screenheight() - w_height |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
85 elif y < 0: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
86 y = 0 |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
87 widget.geometry("+%d+%d" % (x, y)) |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
88 widget.deiconify() # Become visible at the desired location |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 def go(self): |
|
32940
22ded309648b
Wait for visibility before setting a grab. Fixes #946153.
Martin v. Löwis <martin@v.loewis.de>
parents:
31776
diff
changeset
|
91 self.root.wait_visibility() |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
92 self.root.grab_set() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
93 self.root.mainloop() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
94 self.root.destroy() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
95 return self.num |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 def return_event(self, event): |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
98 if self.default is None: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
99 self.root.bell() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
100 else: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
101 self.done(self.default) |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
102 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 def wm_delete_window(self): |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
104 if self.cancel is None: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
105 self.root.bell() |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
106 else: |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
107 self.done(self.cancel) |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
109 def done(self, num): |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
110 self.num = num |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
111 self.root.quit() |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
114 class Dialog(Toplevel): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
115 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
116 '''Class to open dialogs. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
117 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
118 This class is intended as a base class for custom dialogs |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
119 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
120 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
121 def __init__(self, parent, title = None): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
122 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
123 '''Initialize a dialog. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
124 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
125 Arguments: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
126 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
127 parent -- a parent window (the application window) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
128 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
129 title -- the dialog title |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
130 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
131 Toplevel.__init__(self, parent) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
132 |
|
52061
6dbb2c1c0900
Merged revisions 70223 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
47132
diff
changeset
|
133 self.withdraw() # remain invisible for now |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
134 # If the master is not viewable, don't |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
135 # make the child transient, or else it |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
136 # would be opened withdrawn |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
137 if parent.winfo_viewable(): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
138 self.transient(parent) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
139 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
140 if title: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
141 self.title(title) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
142 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
143 self.parent = parent |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
144 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
145 self.result = None |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
146 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
147 body = Frame(self) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
148 self.initial_focus = self.body(body) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
149 body.pack(padx=5, pady=5) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
150 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
151 self.buttonbox() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
152 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
153 if not self.initial_focus: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
154 self.initial_focus = self |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
155 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
156 self.protocol("WM_DELETE_WINDOW", self.cancel) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
157 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
158 if self.parent is not None: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
159 self.geometry("+%d+%d" % (parent.winfo_rootx()+50, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
160 parent.winfo_rooty()+50)) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
161 |
|
52061
6dbb2c1c0900
Merged revisions 70223 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
47132
diff
changeset
|
162 self.deiconify() # become visible now |
|
6dbb2c1c0900
Merged revisions 70223 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
47132
diff
changeset
|
163 |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
164 self.initial_focus.focus_set() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
165 |
|
52061
6dbb2c1c0900
Merged revisions 70223 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
47132
diff
changeset
|
166 # wait for window to appear on screen before calling grab_set |
|
6dbb2c1c0900
Merged revisions 70223 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
47132
diff
changeset
|
167 self.wait_visibility() |
|
6dbb2c1c0900
Merged revisions 70223 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
47132
diff
changeset
|
168 self.grab_set() |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
169 self.wait_window(self) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
170 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
171 def destroy(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
172 '''Destroy the window''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
173 self.initial_focus = None |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
174 Toplevel.destroy(self) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
175 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
176 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
177 # construction hooks |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
178 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
179 def body(self, master): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
180 '''create dialog body. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
181 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
182 return widget that should have initial focus. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
183 This method should be overridden, and is called |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
184 by the __init__ method. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
185 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
186 pass |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
187 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
188 def buttonbox(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
189 '''add standard button box. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
190 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
191 override if you do not want the standard buttons |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
192 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
193 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
194 box = Frame(self) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
195 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
196 w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
197 w.pack(side=LEFT, padx=5, pady=5) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
198 w = Button(box, text="Cancel", width=10, command=self.cancel) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
199 w.pack(side=LEFT, padx=5, pady=5) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
200 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
201 self.bind("<Return>", self.ok) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
202 self.bind("<Escape>", self.cancel) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
203 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
204 box.pack() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
205 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
206 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
207 # standard button semantics |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
208 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
209 def ok(self, event=None): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
210 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
211 if not self.validate(): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
212 self.initial_focus.focus_set() # put focus back |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
213 return |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
214 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
215 self.withdraw() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
216 self.update_idletasks() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
217 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
218 try: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
219 self.apply() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
220 finally: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
221 self.cancel() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
222 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
223 def cancel(self, event=None): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
224 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
225 # put focus back to the parent window |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
226 if self.parent is not None: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
227 self.parent.focus_set() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
228 self.destroy() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
229 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
230 # |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
231 # command hooks |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
232 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
233 def validate(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
234 '''validate the data |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
235 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
236 This method is called automatically to validate the data before the |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
237 dialog is destroyed. By default, it always validates OK. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
238 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
239 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
240 return 1 # override |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
241 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
242 def apply(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
243 '''process the data |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
244 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
245 This method is called automatically to process the data, *after* |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
246 the dialog is destroyed. By default, it does nothing. |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
247 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
248 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
249 pass # override |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
250 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
251 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
252 # -------------------------------------------------------------------- |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
253 # convenience dialogues |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
254 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
255 class _QueryDialog(Dialog): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
256 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
257 def __init__(self, title, prompt, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
258 initialvalue=None, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
259 minvalue = None, maxvalue = None, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
260 parent = None): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
261 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
262 if not parent: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
263 parent = tkinter._default_root |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
264 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
265 self.prompt = prompt |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
266 self.minvalue = minvalue |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
267 self.maxvalue = maxvalue |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
268 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
269 self.initialvalue = initialvalue |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
270 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
271 Dialog.__init__(self, parent, title) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
272 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
273 def destroy(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
274 self.entry = None |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
275 Dialog.destroy(self) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
276 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
277 def body(self, master): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
278 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
279 w = Label(master, text=self.prompt, justify=LEFT) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
280 w.grid(row=0, padx=5, sticky=W) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
281 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
282 self.entry = Entry(master, name="entry") |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
283 self.entry.grid(row=1, padx=5, sticky=W+E) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
284 |
|
78335
fd5166fdb978
Issue #12288: Consider '0' and '0.0' as valid initialvalue for tkinter SimpleDialog.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
52061
diff
changeset
|
285 if self.initialvalue is not None: |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
286 self.entry.insert(0, self.initialvalue) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
287 self.entry.select_range(0, END) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
288 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
289 return self.entry |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
290 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
291 def validate(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
292 try: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
293 result = self.getresult() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
294 except ValueError: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
295 messagebox.showwarning( |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
296 "Illegal value", |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
297 self.errormessage + "\nPlease try again", |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
298 parent = self |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
299 ) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
300 return 0 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
301 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
302 if self.minvalue is not None and result < self.minvalue: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
303 messagebox.showwarning( |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
304 "Too small", |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
305 "The allowed minimum value is %s. " |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
306 "Please try again." % self.minvalue, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
307 parent = self |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
308 ) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
309 return 0 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
310 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
311 if self.maxvalue is not None and result > self.maxvalue: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
312 messagebox.showwarning( |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
313 "Too large", |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
314 "The allowed maximum value is %s. " |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
315 "Please try again." % self.maxvalue, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
316 parent = self |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
317 ) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
318 return 0 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
319 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
320 self.result = result |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
321 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
322 return 1 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
323 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
324 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
325 class _QueryInteger(_QueryDialog): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
326 errormessage = "Not an integer." |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
327 def getresult(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
328 return int(self.entry.get()) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
329 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
330 def askinteger(title, prompt, **kw): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
331 '''get an integer from the user |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
332 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
333 Arguments: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
334 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
335 title -- the dialog title |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
336 prompt -- the label text |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
337 **kw -- see SimpleDialog class |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
338 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
339 Return value is an integer |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
340 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
341 d = _QueryInteger(title, prompt, **kw) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
342 return d.result |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
343 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
344 class _QueryFloat(_QueryDialog): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
345 errormessage = "Not a floating point value." |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
346 def getresult(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
347 return float(self.entry.get()) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
348 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
349 def askfloat(title, prompt, **kw): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
350 '''get a float from the user |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
351 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
352 Arguments: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
353 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
354 title -- the dialog title |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
355 prompt -- the label text |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
356 **kw -- see SimpleDialog class |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
357 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
358 Return value is a float |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
359 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
360 d = _QueryFloat(title, prompt, **kw) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
361 return d.result |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
362 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
363 class _QueryString(_QueryDialog): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
364 def __init__(self, *args, **kw): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
365 if "show" in kw: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
366 self.__show = kw["show"] |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
367 del kw["show"] |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
368 else: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
369 self.__show = None |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
370 _QueryDialog.__init__(self, *args, **kw) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
371 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
372 def body(self, master): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
373 entry = _QueryDialog.body(self, master) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
374 if self.__show is not None: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
375 entry.configure(show=self.__show) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
376 return entry |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
377 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
378 def getresult(self): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
379 return self.entry.get() |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
380 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
381 def askstring(title, prompt, **kw): |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
382 '''get a string from the user |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
383 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
384 Arguments: |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
385 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
386 title -- the dialog title |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
387 prompt -- the label text |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
388 **kw -- see SimpleDialog class |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
389 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
390 Return value is a string |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
391 ''' |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
392 d = _QueryString(title, prompt, **kw) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
393 return d.result |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
394 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
395 |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
396 |
|
31776
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
397 if __name__ == '__main__': |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
398 |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
399 def test(): |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
400 root = Tk() |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
401 def doit(root=root): |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
402 d = SimpleDialog(root, |
|
7731
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
403 text="This is a test dialog. " |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
404 "Would this have been an actual dialog, " |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
405 "the buttons below would have been glowing " |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
406 "in soft pink light.\n" |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
407 "Do you believe this?", |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
408 buttons=["Yes", "No", "Cancel"], |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
409 default=0, |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
410 cancel=2, |
|
9c37ed8868b9
Give in to the tab police.
Guido van Rossum <guido@python.org>
parents:
6948
diff
changeset
|
411 title="Test Dialog") |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
32940
diff
changeset
|
412 print(d.go()) |
|
47132
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
413 print(askinteger("Spam", "Egg count", initialvalue=12*12)) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
414 print(askfloat("Spam", "Egg weight\n(in tons)", minvalue=1, |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
415 maxvalue=100)) |
|
8a74612f3d2b
Tkinter, step 4: merge simple- and filedialog modules.
Georg Brandl <georg@python.org>
parents:
47130
diff
changeset
|
416 print(askstring("Spam", "Egg label")) |
|
31776
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
417 t = Button(root, text='Test', command=doit) |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
418 t.pack() |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
419 q = Button(root, text='Quit', command=t.quit) |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
420 q.pack() |
|
29be729b32c3
Patch #911176: Move test function into __main__
Martin v. Löwis <martin@v.loewis.de>
parents:
7731
diff
changeset
|
421 t.mainloop() |
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
422 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
423 test() |
