[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.217.104.36: ~ $
#
# An Introduction to Tkinter
# tkSimpleDialog.py
#
# Copyright (c) 1997 by Fredrik Lundh
#
# fredrik@pythonware.com
# http://www.pythonware.com
#

# --------------------------------------------------------------------
# dialog base class

'''Dialog boxes

This module handles dialog boxes. It contains the following
public symbols:

Dialog -- a base class for dialogs

askinteger -- get an integer from the user

askfloat -- get a float from the user

askstring -- get a string from the user
'''

from Tkinter import *

class Dialog(Toplevel):

    '''Class to open dialogs.

    This class is intended as a base class for custom dialogs
    '''

    def __init__(self, parent, title = None):

        '''Initialize a dialog.

        Arguments:

            parent -- a parent window (the application window)

            title -- the dialog title
        '''
        Toplevel.__init__(self, parent)

        self.withdraw() # remain invisible for now
        # If the master is not viewable, don't
        # make the child transient, or else it
        # would be opened withdrawn
        if parent.winfo_viewable():
            self.transient(parent)

        if title:
            self.title(title)

        self.parent = parent

        self.result = None

        body = Frame(self)
        self.initial_focus = self.body(body)
        body.pack(padx=5, pady=5)

        self.buttonbox()


        if not self.initial_focus:
            self.initial_focus = self

        self.protocol("WM_DELETE_WINDOW", self.cancel)

        if self.parent is not None:
            self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
                                      parent.winfo_rooty()+50))

        self.deiconify() # become visibile now

        self.initial_focus.focus_set()

        # wait for window to appear on screen before calling grab_set
        self.wait_visibility()
        self.grab_set()
        self.wait_window(self)

    def destroy(self):
        '''Destroy the window'''
        self.initial_focus = None
        Toplevel.destroy(self)

    #
    # construction hooks

    def body(self, master):
        '''create dialog body.

        return widget that should have initial focus.
        This method should be overridden, and is called
        by the __init__ method.
        '''
        pass

    def buttonbox(self):
        '''add standard button box.

        override if you do not want the standard buttons
        '''

        box = Frame(self)

        w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
        w.pack(side=LEFT, padx=5, pady=5)
        w = Button(box, text="Cancel", width=10, command=self.cancel)
        w.pack(side=LEFT, padx=5, pady=5)

        self.bind("<Return>", self.ok)
        self.bind("<Escape>", self.cancel)

        box.pack()

    #
    # standard button semantics

    def ok(self, event=None):

        if not self.validate():
            self.initial_focus.focus_set() # put focus back
            return

        self.withdraw()
        self.update_idletasks()

        try:
            self.apply()
        finally:
            self.cancel()

    def cancel(self, event=None):

        # put focus back to the parent window
        if self.parent is not None:
            self.parent.focus_set()
        self.destroy()

    #
    # command hooks

    def validate(self):
        '''validate the data

        This method is called automatically to validate the data before the
        dialog is destroyed. By default, it always validates OK.
        '''

        return 1 # override

    def apply(self):
        '''process the data

        This method is called automatically to process the data, *after*
        the dialog is destroyed. By default, it does nothing.
        '''

        pass # override


# --------------------------------------------------------------------
# convenience dialogues

class _QueryDialog(Dialog):

    def __init__(self, title, prompt,
                 initialvalue=None,
                 minvalue = None, maxvalue = None,
                 parent = None):

        if not parent:
            import Tkinter
            parent = Tkinter._default_root

        self.prompt   = prompt
        self.minvalue = minvalue
        self.maxvalue = maxvalue

        self.initialvalue = initialvalue

        Dialog.__init__(self, parent, title)

    def destroy(self):
        self.entry = None
        Dialog.destroy(self)

    def body(self, master):

        w = Label(master, text=self.prompt, justify=LEFT)
        w.grid(row=0, padx=5, sticky=W)

        self.entry = Entry(master, name="entry")
        self.entry.grid(row=1, padx=5, sticky=W+E)

        if self.initialvalue is not None:
            self.entry.insert(0, self.initialvalue)
            self.entry.select_range(0, END)

        return self.entry

    def validate(self):

        import tkMessageBox

        try:
            result = self.getresult()
        except ValueError:
            tkMessageBox.showwarning(
                "Illegal value",
                self.errormessage + "\nPlease try again",
                parent = self
            )
            return 0

        if self.minvalue is not None and result < self.minvalue:
            tkMessageBox.showwarning(
                "Too small",
                "The allowed minimum value is %s. "
                "Please try again." % self.minvalue,
                parent = self
            )
            return 0

        if self.maxvalue is not None and result > self.maxvalue:
            tkMessageBox.showwarning(
                "Too large",
                "The allowed maximum value is %s. "
                "Please try again." % self.maxvalue,
                parent = self
            )
            return 0

        self.result = result

        return 1


class _QueryInteger(_QueryDialog):
    errormessage = "Not an integer."
    def getresult(self):
        return int(self.entry.get())

def askinteger(title, prompt, **kw):
    '''get an integer from the user

    Arguments:

        title -- the dialog title
        prompt -- the label text
        **kw -- see SimpleDialog class

    Return value is an integer
    '''
    d = _QueryInteger(title, prompt, **kw)
    return d.result

class _QueryFloat(_QueryDialog):
    errormessage = "Not a floating point value."
    def getresult(self):
        return float(self.entry.get())

def askfloat(title, prompt, **kw):
    '''get a float from the user

    Arguments:

        title -- the dialog title
        prompt -- the label text
        **kw -- see SimpleDialog class

    Return value is a float
    '''
    d = _QueryFloat(title, prompt, **kw)
    return d.result

class _QueryString(_QueryDialog):
    def __init__(self, *args, **kw):
        if "show" in kw:
            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()

def askstring(title, prompt, **kw):
    '''get a string from the user

    Arguments:

        title -- the dialog title
        prompt -- the label text
        **kw -- see SimpleDialog class

    Return value is a string
    '''
    d = _QueryString(title, prompt, **kw)
    return d.result

if __name__ == "__main__":

    root = Tk()
    root.update()

    print askinteger("Spam", "Egg count", initialvalue=12*12)
    print askfloat("Spam", "Egg weight\n(in tons)", minvalue=1, maxvalue=100)
    print askstring("Spam", "Egg label")

Filemanager

Name Type Size Permission Actions
test Folder 0755
.Canvas.pyo.40009 File 15.2 KB 0644
.Dialog.pyo.40009 File 1.88 KB 0644
.FileDialog.pyo.40009 File 9.5 KB 0644
.ScrolledText.pyo.40009 File 2.6 KB 0644
.SimpleDialog.pyo.40009 File 4.24 KB 0644
.Tix.pyo.40009 File 94.32 KB 0644
.Tkconstants.pyo.40009 File 2.19 KB 0644
.Tkdnd.pyo.40009 File 12.52 KB 0644
.Tkinter.pyo.40009 File 192.89 KB 0644
.tkColorChooser.pyo.40009 File 1.39 KB 0644
.tkCommonDialog.pyo.40009 File 1.48 KB 0644
.tkFileDialog.pyo.40009 File 5.04 KB 0644
.tkFont.pyo.40009 File 6.93 KB 0644
.tkMessageBox.pyo.40009 File 3.8 KB 0644
.tkSimpleDialog.pyo.40009 File 8.9 KB 0644
.ttk.pyo.40009 File 60.58 KB 0644
.turtle.pyo.40009 File 136.15 KB 0644
Canvas.py File 7.29 KB 0644
Canvas.pyc File 15.2 KB 0644
Canvas.pyo File 15.2 KB 0644
Dialog.py File 1.53 KB 0644
Dialog.pyc File 1.88 KB 0644
Dialog.pyo File 1.88 KB 0644
FileDialog.py File 8.62 KB 0644
FileDialog.pyc File 9.5 KB 0644
FileDialog.pyo File 9.5 KB 0644
FixTk.py File 2.87 KB 0644
FixTk.pyc File 1.95 KB 0644
FixTk.pyo File 1.89 KB 0644
ScrolledText.py File 1.79 KB 0644
ScrolledText.pyc File 2.6 KB 0644
ScrolledText.pyo File 2.6 KB 0644
SimpleDialog.py File 3.64 KB 0644
SimpleDialog.pyc File 4.24 KB 0644
SimpleDialog.pyo File 4.24 KB 0644
Tix.py File 75.93 KB 0644
Tix.pyc File 94.32 KB 0644
Tix.pyo File 94.32 KB 0644
Tkconstants.py File 1.46 KB 0644
Tkconstants.pyc File 2.19 KB 0644
Tkconstants.pyo File 2.19 KB 0644
Tkdnd.py File 11.22 KB 0644
Tkdnd.pyc File 12.52 KB 0644
Tkdnd.pyo File 12.52 KB 0644
Tkinter.py File 154.14 KB 0644
Tkinter.pyc File 192.89 KB 0644
Tkinter.pyo File 192.89 KB 0644
tkColorChooser.py File 1.74 KB 0644
tkColorChooser.pyc File 1.39 KB 0644
tkColorChooser.pyo File 1.39 KB 0644
tkCommonDialog.py File 1.38 KB 0644
tkCommonDialog.pyc File 1.48 KB 0644
tkCommonDialog.pyo File 1.48 KB 0644
tkFileDialog.py File 5.59 KB 0644
tkFileDialog.pyc File 5.04 KB 0644
tkFileDialog.pyo File 5.04 KB 0644
tkFont.py File 5.96 KB 0644
tkFont.pyc File 6.93 KB 0644
tkFont.pyo File 6.93 KB 0644
tkMessageBox.py File 3.6 KB 0644
tkMessageBox.pyc File 3.8 KB 0644
tkMessageBox.pyo File 3.8 KB 0644
tkSimpleDialog.py File 7.54 KB 0644
tkSimpleDialog.pyc File 8.9 KB 0644
tkSimpleDialog.pyo File 8.9 KB 0644
ttk.py File 54.07 KB 0644
ttk.pyc File 60.58 KB 0644
ttk.pyo File 60.58 KB 0644
turtle.py File 135.63 KB 0644
turtle.pyc File 136.15 KB 0644
turtle.pyo File 136.15 KB 0644