Unfortunately, you cannot just use an unlimited while loop in the main thread of your application. This blocks the main gtk event loop and you will not be able to handle more events. What you probably want to do is create a thread.
Do you consider using ToggleButton instead of GtkButton ? The closest to the is_clicked method is is_active , and you will find it in the toggle buttons.
Here is an example of starting and controlling the flow depending on the state of the toggle button (replace triggered with clicked and ToggleButton with Button if you want to use a regular button):
import gtk, gobject, threading, time gobject.threads_init() window = gtk.Window() button = gtk.ToggleButton('Start Thread') class T(threading.Thread): pause = threading.Event() stop = False def start(self, *args): super(T, self).start() def run(self): while not self.stop: self.pause.wait() gobject.idle_add(self.rungui) time.sleep(0.1) def rungui(self): pass
This PyGTK FAQ request may be helpful. Greetings.
source share