git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Use global, or not


I have written a GUI program where I have quit a few global variables.
I did not like this, so I now use one global dict. Something like:
    global global_dict

    canceled_report      = 'Genereren rapportage gecanceled.'
    created_report       = 'Rapportage voor {} bestanden is gemaakt.'
    error_append         = 'Er ging iets fout bij het toevoegen van een record.'
    error_generate       = 'Er ging iets fout bij het genereren van de rapportage.'
    error_select         = 'Er ging iets fout bij het selecteren van de directory.'
    error_widening       = 'Er ging iets fout bij instellen van de wijdte.'
    error_nofiles        = 'Er zijn geen bestanden om te verwerken.'
    messages             = {
        'canceled': canceled_report,
        'created':  created_report,
        'append':   error_append,
        'generate': error_generate,
        'select':   error_select,
        'widening': error_widening,
        'nofiles':  error_nofiles,
    }
    error_str           = 'Foutmelding'
    info_str            = 'Info'
    warning_str         = 'Waarschuwing'
    titles              = {
        'error':   error_str,
        'info':    info_str,
        'warning': warning_str,
    }
    .
    .
    .
    window         = Tk()
    .
    .
    .
    progress       = ttk.Progressbar(progress_frame, orient = 'horizontal',
                                     length = 200, mode = 'determinate')
    .
    .
    .
    global_dict          = {
        'messages': messages,
        'progress': progress,
        'window':   window,
    }

And in the program do things like:
    global_dict['progress']['value'] += 1
    global_dict['window'].update_idletasks()
        global_dict['window'].update_idletasks()

and:
    messagebox.showwarning(global_dict['titles']['warning'],
                           global_dict['messages']['nofiles'])


Is that an acceptable way to do this?

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof