Question

I am using EasyGUI as part of a small program I am writing. In it, I am using the IntegerBox "function".

Part of the parameters of this function is the lowerbound and the upperbound (the limits of the value entered). If the value is under the lowerbound or if it exceeds the upperbound, the program raises an error.

Only for this program, I want to remove the lowerbound/upperbound--- so it is possible to put any number in.

My code is:

import easygui as eg
numMin=eg.integerbox(msg="What is the minimum value of the numbers?"
                   , title="Random Number Generator"
                   , default=0
                   , lowerbound=
                   , upperbound=
                   , image=None
                   , root=None
                   )

I don't have anything entered yet, because I don't know what to put. Any input would be greatly appreciated. Thanks!

Was it helpful?

Solution

When all else fails, trying reading the documentation (that is, if there is any ;-).

With EasyGui there is, although it's a separate download, the easygui-docs-0.97.zip file, shown on this webpage. Here's what it says in the API section for the integerbox() function:

screenshot of easygui integer box documentation

So, to answer your question, no, there doesn't appear to be a way to disable the bounds-checking the module's integerbox() does.

Update: Here's a new function you can add to the module that doesn't do bounds-checking at all nor does it accept bounds arguments (so it's not strictly call-compatible with the stock version). If you put it in, be sure to also add its name, 'integerbox2', to the definition of the __all__ list near the top of the module's script file.

If you would like to minimize changes to the easygui module's script itself in case there's a future update, you instead could put the new function in a separate .py file and then add an import integerbox2 near the top of easygui.py (plus another line to add it to __all__).

Here's the additional function:

#-------------------------------------------------------------------
# integerbox2 - like integerbox(), but without bounds checking.
#-------------------------------------------------------------------
def integerbox2(msg=""
               , title=" "
               , default=""
               , image=None
               , root=None):
    """
    Show a box in which a user can enter an integer.

    In addition to arguments for msg and title, this function accepts
    an integer argument for "default".

    The default argument may be None.

    When the user enters some text, the text is checked to verify that it
    can be converted to an integer, **no bounds checking is done**.

    If it can be, the integer (not the text) is returned.

    If it cannot, then an error msg is displayed, and the integerbox is
    redisplayed.

    If the user cancels the operation, None is returned.

    :param str msg: the msg to be displayed
    :param str title: the window title
    :param str default: The default value to return
    :param str image: Filename of image to display
    :param tk_widget root: Top-level Tk widget
    :return: the integer value entered by the user

    """
    if not msg:
        msg = "Enter an integer value"

    # Validate the arguments and convert to integers
    exception_string = ('integerbox "{0}" must be an integer.  '
                        'It is >{1}< of type {2}')
    if default:
        try:
            default=int(default)
        except ValueError:
            raise ValueError(exception_string.format('default', default,
                                                     type(default)))

    while 1:
        reply = enterbox(msg, title, str(default), image=image, root=root)
        if reply is None:
            return None
        try:
            reply = int(reply)
        except:
            msgbox('The value that you entered:\n\t"{}"\n'
                   'is not an integer.'.format(reply), "Error")
            continue
        # reply has passed validation check, it is an integer.
        return reply
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top