I've tested the what I described earlier today and it works. If there are two distinct images on disk, then calling gtk.Image.set_from_file() will automatically update the image gtk displays. This leads me to believe that it's a timing issue you're facing. The plotter.plot() method wouldn't happen to be asynchronous, would it? Because if it is it might just be the case that you update the gtk.Image before the entire image generated by gnuplot has been written to disk. Obviously, that's just a guess since I don't know how your plot() method works internally. But it would explain why the first update of your image (sometimes) doesn't take and the image on disk actually appears correct if you look at it after a certain time.
2013/1/28 Daniil Baturin <dan...@baturin.org> > I'm using set_from_file(), and it kind of works. The problem is that the > image is updated only second time event handler that replots and invokes > set_from_file() is triggered. I double checked replot occurs every time > event is caught, when I open the image file manually it contains the > updated plot. > > I added queue_redraw() after set_from_file(), but it didn't help. > > This is what I have there now: > def apply_equations(self, widget, data): > x_equation = data[0].get_text() > y_equation = data[1].get_text() > image = data[2] > print "Equations: x=%s, y=%s" % (x_equation, y_equation) > expression = x_equation + "," + y_equation > plotter.set_expression(expression) > plotter.plot() > image.set_from_file("test.png") > image.queue_draw() > > self.equations_apply.connect("clicked", self.apply_equations, > (self.x_expression, self.y_expression, self.image) ) > > > > > On 01/28/2013 10:02 PM, Niklas Koep wrote: > > If you're updating your gtk.Image contents via its set_from_file() method > you don't need to request an update at all -- it happens automatically. > Generally speaking, however, gtk.Widget implements a queue_draw() method > which can be used to invalidate the entire visible area of a widget which > in turn causes it to be redrawn. For your use this doesn't seem to be > required though. Hope this helps. > > > > 2013/1/27 Daniil Baturin <dan...@baturin.org> > >> Hi, >> What is the proper way to reload gtk.Image contents? >> >> I want to make a simple educational gnuplot frontend that would allow >> playing with parametric curve coefficients by using spin buttons, >> expressions with substituted constants will be passed to gnuplot and >> generated png displayed in a gtk.Image. But I'm not sure how to request >> update of displayed image if the image has changed. >> >> >> -- >> #!/usr/bin/env perl >> @a=split(//, "daniil @ baturin . org" );# Daniil Baturin >> @b=split(//,q/Px%!+o0Q6lh*7dp$.@8#%|y{/);while($i<24){$_.= >> chr((ord(@b[$i])-ord(@a[$i])+62)%94+32);$i++};print"$_\n"# >> >> _______________________________________________ >> pygtk mailing list pygtk@daa.com.au >> http://www.daa.com.au/mailman/listinfo/pygtk >> Read the PyGTK FAQ: http://faq.pygtk.org/ >> > > > > -- > #!/usr/bin/env perl > @a=split(//, "daniil @ baturin . org" );# Daniil Baturin > @b=split(//,q/Px%!+o0Q6lh*7dp$.@8#%|y{/);while($i<24){$_.= > chr((ord(@b[$i])-ord(@a[$i])+62)%94+32);$i++};print"$_\n"# > > > _______________________________________________ > pygtk mailing list pygtk@daa.com.au > http://www.daa.com.au/mailman/listinfo/pygtk > Read the PyGTK FAQ: http://faq.pygtk.org/ >
_______________________________________________ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://faq.pygtk.org/