Mercurial > cpython-lru_cache-weakref
annotate Lib/tkinter/SimpleDialog.py @ 3720:b341def4eef8 legacy-trunk
Ignore latex intermediate products.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 26 Jun 1996 19:30:01 +0000 |
| parents | a79b8d81997f |
| children | 15b1b03ade93 |
| rev | line source |
|---|---|
|
3688
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 """A simple but flexible modal dialog box.""" |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 from Tkinter import * |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 import tktools |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 class SimpleDialog: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 def __init__(self, master, |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 text='', buttons=[], default=None, cancel=None, |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 title=None, class_=None): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 self.root = tktools.make_toplevel(master, title=title, class_=class_) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 self.message = Message(self.root, text=text, aspect=400) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 self.message.pack(expand=1, fill=BOTH) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 self.frame = Frame(self.root) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 self.frame.pack() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 self.num = default |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 self.cancel = cancel |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 self.default = default |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 self.root.bind('<Return>', self.return_event) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 for num in range(len(buttons)): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 s = buttons[num] |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 b = Button(self.frame, text=s, |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 command=(lambda self=self, num=num: self.done(num))) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 if num == default: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 b.config(relief=RIDGE, borderwidth=8) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 b.pack(side=LEFT, fill=BOTH, expand=1) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 tktools.set_transient(self.root, master) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 def go(self): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 self.root.grab_set() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 self.root.mainloop() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 self.root.destroy() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 return self.num |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 def return_event(self, event): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 if self.default is None: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 self.root.bell() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 else: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 self.done(self.default) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 def wm_delete_window(self): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 if self.cancel is None: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 self.root.bell() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 else: |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 self.done(self.cancel) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 def done(self, num): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 self.num = num |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 self.root.quit() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 def test(): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 root = Tk() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 def doit(root=root): |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 d = SimpleDialog(root, |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 text="This is a test dialog. " |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 "Would this have been an actual dialog, " |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 "the buttons below would have glowed " |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 "in soft pink light. " |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 "Do you believe this?", |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 buttons=["Yes", "No", "Cancel"], |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 default=0, |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 cancel=2, |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 title="Test Dialog") |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 print d.go() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 t = Button(root, text='Test', command=doit) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 t.pack() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 q = Button(root, text='Quit', command=t.quit) |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 q.pack() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 t.mainloop() |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 if __name__ == '__main__': |
|
a79b8d81997f
new simple dialog module, incompatible
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 test() |
