Re: update of elements in GUI

2010-08-17 Thread Eric Brunel
In article 
24dc97b3-a8b5-4638-9cf5-a397f1eae...@q16g2000prf.googlegroups.com,
 Jah_Alarm jah.al...@gmail.com wrote:

 hi, I've already asked this question but so far the progress has been
 small.
 
 I'm running Tkinter. I have some elements on the screen (Labels, most
 importantly) which content has to be updated every iteration of the
 algorithm run, e.g. Iteration = [i] for i in range(n), n=100. I'm
 using the update_idletasks() command in the function itself after the
 variable.set(...) command. The variable type is IntVar(), and the
 mistake I'm getting is 'IntVar instance has no attribute
 'update_idletasks'. No updates are displayed, of course.

You have to call update_idletasks on a Tkinter *widget*, not a variable. 
You can call it on your window (Tk or Toplevel instance) or on your 
label for example. This way, it should work.

 Without the GUI the algorithm (it's a genetic algorithm) is working
 fine, but I need to make it available to other people via GUI
 
 cheers,
 
 Alex
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: update of elements in GUI

2010-08-17 Thread Jah_Alarm
thanks. The thing is, the objects actually get updated without this
command, but when I run the GUI outside of python shell (i.e. in
command prompt as python filename.py or compile it to .exe file) the
objects do not get updated. I tried
Label(mainframe,textvariable=var).grid(column=1,row=1).update_idletasks()
and mainframe.update_idletasks() but it still doesn't work.


On Aug 17, 7:19 pm, Eric Brunel eric.bru...@pragmadev.nospam.com
wrote:
 In article
 24dc97b3-a8b5-4638-9cf5-a397f1eae...@q16g2000prf.googlegroups.com,

  Jah_Alarm jah.al...@gmail.com wrote:
  hi, I've already asked this question but so far the progress has been
  small.

  I'm running Tkinter. I have some elements on the screen (Labels, most
  importantly) which content has to be updated every iteration of the
  algorithm run, e.g. Iteration = [i] for i in range(n), n=100. I'm
  using the update_idletasks() command in the function itself after the
  variable.set(...) command. The variable type is IntVar(), and the
  mistake I'm getting is 'IntVar instance has no attribute
  'update_idletasks'. No updates are displayed, of course.

 You have to call update_idletasks on a Tkinter *widget*, not a variable.
 You can call it on your window (Tk or Toplevel instance) or on your
 label for example. This way, it should work.



  Without the GUI the algorithm (it's a genetic algorithm) is working
  fine, but I need to make it available to other people via GUI

  cheers,

  Alex

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: update of elements in GUI

2010-08-17 Thread Jah_Alarm
In MATLAB this command is drawnow, just in case

On Aug 17, 9:49 pm, Jah_Alarm jah.al...@gmail.com wrote:
 thanks. The thing is, the objects actually get updated without this
 command, but when I run the GUI outside of python shell (i.e. in
 command prompt as python filename.py or compile it to .exe file) the
 objects do not get updated. I tried
 Label(mainframe,textvariable=var).grid(column=1,row=1).update_idletasks()
 and mainframe.update_idletasks() but it still doesn't work.

 On Aug 17, 7:19 pm, Eric Brunel eric.bru...@pragmadev.nospam.com
 wrote:



  In article
  24dc97b3-a8b5-4638-9cf5-a397f1eae...@q16g2000prf.googlegroups.com,

   Jah_Alarm jah.al...@gmail.com wrote:
   hi, I've already asked this question but so far the progress has been
   small.

   I'm running Tkinter. I have some elements on the screen (Labels, most
   importantly) which content has to be updated every iteration of the
   algorithm run, e.g. Iteration = [i] for i in range(n), n=100. I'm
   using the update_idletasks() command in the function itself after the
   variable.set(...) command. The variable type is IntVar(), and the
   mistake I'm getting is 'IntVar instance has no attribute
   'update_idletasks'. No updates are displayed, of course.

  You have to call update_idletasks on a Tkinter *widget*, not a variable.
  You can call it on your window (Tk or Toplevel instance) or on your
  label for example. This way, it should work.

   Without the GUI the algorithm (it's a genetic algorithm) is working
   fine, but I need to make it available to other people via GUI

   cheers,

   Alex

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: update of elements in GUI

2010-08-17 Thread Eric Brunel
(Top-post corrected; please don't do that, it makes messages very hard 
to read via usenetŠ)

In article 
26c363c8-11d7-49b9-a1c1-251ab5ff9...@p22g2000pre.googlegroups.com,
 Jah_Alarm jah.al...@gmail.com wrote:
 On Aug 17, 7:19 pm, Eric Brunel eric.bru...@pragmadev.nospam.com
 wrote:
  You have to call update_idletasks on a Tkinter *widget*, not a variable.
  You can call it on your window (Tk or Toplevel instance) or on your
  label for example. This way, it should work.
 
 thanks. The thing is, the objects actually get updated without this
 command, but when I run the GUI outside of python shell (i.e. in
 command prompt as python filename.py or compile it to .exe file) the
 objects do not get updated. I tried
 Label(mainframe,textvariable=var).grid(column=1,row=1).update_idletasks()
 and mainframe.update_idletasks() but it still doesn't work.

I think you're really misunderstanding something here: the call to 
update_idletasks is a one shot call to the GUI to basically tell it to 
refresh itself. So each time you change anything that should be 
displayed, you have to call that method again, or your changes will only 
be seen when the control returns to the GUI, which is basically at the 
end of your processing.

The fact that it works when you're doing it interactively is normal. In 
this mode, you don't have a GUI event loop running, so the GUI updates 
itself all the time automatically. This is never true in programs you 
run the 'normal' way, i.e via: python filename.py

And by the way, Label(Š).grid(Š).update_idletasks() had no chance to 
work anyway: the grid method doesn't return anything, so you're trying 
to call the update_idletasks method on None hereŠ

HTH
 - Eric -
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: update of elements in GUI

2010-08-17 Thread woooee
On Aug 16, 9:07 pm, Jah_Alarm jah.al...@gmail.com wrote:
 hi, I've already asked this question but so far the progress has been
 small.

 I'm running Tkinter. I have some elements on the screen (Labels, most
 importantly) which content has to be updated every iteration of the
 algorithm run, e.g. Iteration = [i] for i in range(n), n=100. I'm
 using the update_idletasks() command in the function itself after the
 variable.set(...) command. The variable type is IntVar(), and the
 mistake I'm getting is 'IntVar instance has no attribute
 'update_idletasks'. No updates are displayed, of course.

 Without the GUI the algorithm (it's a genetic algorithm) is working
 fine, but I need to make it available to other people via GUI

 cheers,

 Alex

This program I had lying around and it will hopefully make things
clearer.  The integer under the second label (i.e. the 3rd label)
increases by on every time you click the Print Contents button.  The
variable associated with the second label and the entry box update as
you change the entry box's contents, all with no calls to
update_idletasks().
class EntryTest:
 shows using the same StringVar in the second list box
and in the entry box

def __init__(self):
self.top = Tkinter.Tk()
self.top.title(Test of Entry)
self.top.geometry(200x150+10+10)

self.str_1 = Tkinter.StringVar()
label_lit = Tkinter.StringVar()
self.int_lit = Tkinter.IntVar()

label_1 = Tkinter.Label(self.top, textvariable = label_lit )
label_1.pack()
label_lit.set( Test of Label)

label_2 = Tkinter.Label(self.top, textvariable = self.str_1 )
label_2.pack()

label_3 = Tkinter.Label(self.top, textvariable =
self.int_lit )
label_3.pack()
self.int_lit.set(0)

entry_1 = Tkinter.Entry(self.top, textvariable=self.str_1)
entry_1.pack()
self.str_1.set( Entry Initial Value )

print_button = Tkinter.Button(self.top, text='PRINT CONTENTS',
 command=self.getit, bg='blue', fg='white' )
print_button.pack(fill=Tkinter.X, expand=1)

exit_button= Tkinter.Button(self.top, text='EXIT',
   command=self.top.quit, bg='red', fg='white' )
exit_button.pack(fill=Tkinter.X, expand=1)

entry_1.focus_set()
self.top.mainloop()

   ##-
   def getit(self) :
   print getit: variable passed =, self.str_1.get()
   x = self.int_lit.get()
   self.int_lit.set(x+1)


##===
if __main__ == __name__  :
ET=EntryTest()
print under __main__ =, ET.str_1.get()
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: update of elements in GUI

2010-08-16 Thread woooee
On Aug 16, 9:07 pm, Jah_Alarm jah.al...@gmail.com wrote:
I have some elements on the screen (Labels, most
 importantly) which content has to be updated every iteration of the
 algorithm
 The variable type is IntVar()

You would use int_var_name.set(some_number)
-- 
http://mail.python.org/mailman/listinfo/python-list