diff options
author | Georg Brandl <georg@python.org> | 2008-05-16 14:24:45 +0000 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-16 14:24:45 +0000 |
commit | bbc57d73a0f0d1476d9c23b920ecc1ef8212a554 (patch) | |
tree | 44b67b84bf3297c5feb4e58a286fd98a92af4c99 /Lib/lib-tk/SimpleDialog.py | |
parent | ae6b9f3cb22df80118dfe470ac2130fe0aa716a1 (diff) | |
download | cpython-git-bbc57d73a0f0d1476d9c23b920ecc1ef8212a554.tar.gz |
Step 1 of Tkinter renaming: move lib-tk modules into a new "tkinter" package.
Diffstat (limited to 'Lib/lib-tk/SimpleDialog.py')
-rw-r--r-- | Lib/lib-tk/SimpleDialog.py | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/Lib/lib-tk/SimpleDialog.py b/Lib/lib-tk/SimpleDialog.py deleted file mode 100644 index cb08318dbd..0000000000 --- a/Lib/lib-tk/SimpleDialog.py +++ /dev/null @@ -1,112 +0,0 @@ -"""A simple but flexible modal dialog box.""" - - -from Tkinter import * - - -class SimpleDialog: - - def __init__(self, master, - text='', buttons=[], default=None, cancel=None, - title=None, class_=None): - if class_: - self.root = Toplevel(master, class_=class_) - else: - self.root = Toplevel(master) - if title: - self.root.title(title) - self.root.iconname(title) - self.message = Message(self.root, text=text, aspect=400) - self.message.pack(expand=1, fill=BOTH) - self.frame = Frame(self.root) - self.frame.pack() - self.num = default - self.cancel = cancel - self.default = default - self.root.bind('<Return>', self.return_event) - for num in range(len(buttons)): - s = buttons[num] - b = Button(self.frame, text=s, - command=(lambda self=self, num=num: self.done(num))) - if num == default: - b.config(relief=RIDGE, borderwidth=8) - b.pack(side=LEFT, fill=BOTH, expand=1) - self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window) - self._set_transient(master) - - def _set_transient(self, master, relx=0.5, rely=0.3): - widget = self.root - widget.withdraw() # Remain invisible while we figure out the geometry - widget.transient(master) - widget.update_idletasks() # Actualize geometry information - if master.winfo_ismapped(): - m_width = master.winfo_width() - m_height = master.winfo_height() - m_x = master.winfo_rootx() - m_y = master.winfo_rooty() - else: - m_width = master.winfo_screenwidth() - m_height = master.winfo_screenheight() - m_x = m_y = 0 - w_width = widget.winfo_reqwidth() - w_height = widget.winfo_reqheight() - x = m_x + (m_width - w_width) * relx - y = m_y + (m_height - w_height) * rely - if x+w_width > master.winfo_screenwidth(): - x = master.winfo_screenwidth() - w_width - elif x < 0: - x = 0 - if y+w_height > master.winfo_screenheight(): - y = master.winfo_screenheight() - w_height - elif y < 0: - y = 0 - widget.geometry("+%d+%d" % (x, y)) - widget.deiconify() # Become visible at the desired location - - def go(self): - self.root.wait_visibility() - self.root.grab_set() - self.root.mainloop() - self.root.destroy() - return self.num - - def return_event(self, event): - if self.default is None: - self.root.bell() - else: - self.done(self.default) - - def wm_delete_window(self): - if self.cancel is None: - self.root.bell() - else: - self.done(self.cancel) - - def done(self, num): - self.num = num - self.root.quit() - - -if __name__ == '__main__': - - def test(): - root = Tk() - def doit(root=root): - d = SimpleDialog(root, - text="This is a test dialog. " - "Would this have been an actual dialog, " - "the buttons below would have been glowing " - "in soft pink light.\n" - "Do you believe this?", - buttons=["Yes", "No", "Cancel"], - default=0, - cancel=2, - title="Test Dialog") - print d.go() - t = Button(root, text='Test', command=doit) - t.pack() - q = Button(root, text='Quit', command=t.quit) - q.pack() - t.mainloop() - - test() |