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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()