So that means that you will use a ttk frame instead of the Tkinter.Frame? I'll see if I can get this working once I get home. (my program is on my Desktop and I just do some testing on my laptop)
Thanks a lot so far! Regards, Olrik 2008/10/29 Guilherme Polo <[EMAIL PROTECTED]> > On 10/29/08, Olrik Lenstra <[EMAIL PROTECTED]> wrote: > > I see, Thanks a lot, I really don't wish to bother you any further, but > > here's my current situation. > > I am still a beginning programmer and I am not entirely sure where to put > > this code exactly. > > > > How would I go about using this code? > > > > It should be very similar to what you are already doing in wx. > > But, you would need to layout your toplevel (the one that is created > when you call Tkinter.Tk()) as this: > > There would be a ttk.Frame that would hold all the other widgets, > which should be all ttk widgets according to this sample. Then you > would call safe_yield(frame, True) in the same situations you would in > wx. Now it remains to check if there is the same need for this in tk > as there is in wx. > > Finally, a sample way to layout the widgets: > > root = Tkinter.Tk() > frame = ttk.Frame(root) > btn1 = ttk.Button(frame, text="Button 1") > ... > ... some time later: > safe_yield(frame, True) > ... > > > Thank you so much in advance. > > Regards, > > Olrik > > > > 2008/10/29 Guilherme Polo <[EMAIL PROTECTED]> > > > > > > > > > > > > > > ---------- Forwarded message ---------- > > > From: Guilherme Polo <[EMAIL PROTECTED]> > > > Date: Oct 29, 2008 9:16 AM > > > Subject: Re: [Tkinter-discuss] WxPython -> Tkinter > > > To: Olrik Lenstra <[EMAIL PROTECTED]> > > > Cc: [EMAIL PROTECTED] > > > > > > > > > On 10/29/08, Olrik Lenstra <[EMAIL PROTECTED]> wrote: > > > > Hello everyone, > > > > > > > > A while ago I joined the Tutor mailing list, and they helped me out > > with a > > > > question regarding wxPython. > > > > Now however, I have tried a program in Tkinter and I would like to > see > > if > > > > there is a similar command to "wx.SafeYield(self, True)". > > > > > > > > > It will be a combination of commands, not a single one. Initially I > > > considered this as "probably without solution", since tcl acquired a > > > yield command just in the 8.6a3 release, but then I looked at > > > wx.SafeYield code and apparently it is possible to replicate it. > > > > > > Here is an initial cut, it is very possible to contain something not > > > equivalent to wx.SafeYield (besides it could be improved): > > > > > > > > > import ttk > > > > > > inside_tkyield = False > > > disabled_wins = {} > > > > > > def safe_yield(window, only_if_needed=False): > > > window_disabler(window) > > > > > > try: > > > return tk_yield(window, only_if_needed) > > > finally: > > > for widget, flags in disabled_wins.iteritems(): > > > ttk.Widget.state(widget, flags) > > > disabled_wins.clear() > > > > > > > > > def window_disabler(window): > > > widgets = window.children.values() > > > widgets.append(window) > > > > > > for widget in widgets: > > > if widget.instate(['!disabled']): > > > prev_flags = widget.state(['disabled']) > > > disabled_wins[widget] = prev_flags > > > > > > > > > def tk_yield(window, only_if_needed=False): > > > # wx implements this differently based on the backend it is using > > > global inside_tkyield > > > if inside_tkyield: > > > if not only_if_needed: > > > raise RuntimeError("safe_yield called recursively") > > > > > > return False > > > > > > inside_tkyield = True; > > > > > > window.update() > > > window.update_idletasks() > > > > > > inside_tkyield = False; > > > > > > return True > > > > > > > > > Note that this depends on ttk widgets > > > (http://pypi.python.org/pypi/pyttk) since it uses > > widget.state to > > > disable and reenable the widgets. On windows the "wm" command supports > > > disabling the entire window, so it is easier if you can use it. > > > > > > [Forwarded because I sent to the wrong list first time] > > > > > > > > > > Below is a copy of the message to the tutor list. > > > > > > > > > Dear Mailing list, > > > > > > > > > > a while ago a few of you helped me solve an issue I had with a GUI > / > > scan > > > > > program that I made. > > > > > The problem was that when I tried to move the frame it would hang > > until > > > > the > > > > > scan was finished. > > > > > To solve this I had to add "wx.SafeYield(self, True)" to the scan > and > > the > > > > > GUI wouldn't hang any more. > > > > > Now I have redone the program and have written it with Tkinter > > instead of > > > > > WxPython. > > > > > > > > > > So is there a similar command for Tkinter as there is for > WxPython? > > > > > > > > > > Thanks in advance. > > > > > Regards, > > > > > Olrik > > > > > > > > > > > > > > > > _______________________________________________ > > > > Tkinter-discuss mailing list > > > > Tkinter-discuss@python.org > > > > > > http://mail.python.org/mailman/listinfo/tkinter-discuss > > > > > > > > > > > > > > > > > > > > -- > > > -- Guilherme H. Polo Goncalves > > > > > > > > > -- > > > -- Guilherme H. Polo Goncalves > > > > > > > > > > > > _______________________________________________ > > > Tkinter-discuss mailing list > > > Tkinter-discuss@python.org > > > > > http://mail.python.org/mailman/listinfo/tkinter-discuss > > > > > > > > > > -- > -- Guilherme H. Polo Goncalves >
_______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss