On 07/11/15 20:18, Alan Gauld wrote:
On 07/11/15 04:34, Chris Roy-Smith wrote:def genF(ofield): ... for x in range(10):def second(): main=Toplevel(root) ofield=Text(main, height=15, width=15) ofield.pack() B3=Button(main, text='exit', command=main.destroy) B3.pack() B4=Button(main, text='fill text', command=genF(ofield))You call a function by sup[plying the parens after its name. So the function gets called here. The normal way to circumvent that in Tkinter is to use a lambda expression to defer execution, like so: B4=Button(main, text='fill text', command=lambda wgt=ofield : genF(wgt))
This certainly wasn't obvious from what I could find on the internet. Now I see an application for Lambda
Just tried out leaving this second mainloop, and every works the same. I had assumed I needed to create a loop the same as the top window.B4.pack() main.mainloop()I'm not sure you need the second mainloop. I think the root level mainloop will work for your window too.
Thanks for clearing up this mystery _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
