[Tutor] tkinter message & button questions

Cranky Frankie cranky.frankie at gmail.com
Mon Nov 28 19:06:45 CET 2011


I have a program I'm testing in Python 3.1 in Windows XP using tkinker
to dispay random quotes. It works except for two things.

1) The program displays a random quote of the day when it's invoked,
but I want to have a "Next quote" button so that additional random
quotes can be displayed. Here are the parts of the program were I get
the first quote:

################################
def get_random_quote():                            # create a function
to get a random quote from quote_dict

    rq = (random.randrange(len(quote_dict))+1)          # pick a
random entry from the quote dictionary
    return rq


def output_quote():
    rand_quote = get_random_quote()             # get a random quote
    quote = quote_dict[rand_quote][1]         # put the quote in a
string varible
    author = quote_dict[rand_quote][0]        # put the author in a
string variable
    om = (quote+"\n\n"+author)                  # format the output
string variable
    return om


out_message = output_quote()

msg_widget = Message(win, anchor = NW, justify = LEFT, width = 1000,
bd= 2, bg = "white",
                     relief = SOLID, text=out_message)

################################


Here is my button the get the next quote:

################################

next_button = Button(win, text="Next Quote", command=output_quote()) #
create button  widget
next_button.pack(side=LEFT)

################################

Even though I'm calling the same function, output_quote(), the screen
is not getting refreshed. There is no error, just the new quote is not
showing up in the message box. How do I refresh the message box?

2) The message widget seems to be sizing based on the size of the text
you present to it. For a small quote it's small, for a longer quote it
streches out wide and then adds more lines. I'd like to present a
consistent sized message box when the program is run, no matter if the
text is small or large, but I can't figure out how to do that. In
other words, I'd like the message widget in question 1 above to
display as a box capable of storing, say, 1,000 characters, even if I
only give it 100, so the program looks the same every time it's
invoked. Is there a way to make a default sized message widget?

-- 
Frank L. "Cranky Frankie" Palmeri


More information about the Tutor mailing list