У меня есть два callbacks, установленных для щелкнутого сигнала на кнопке done. Есть ли способ вынуть (не выполнить) один из них, например.Уничтожение старого обратного вызова для кнопки и установка нового
import threading
import time
from gi.repository import Gtk, GLib
class Test():
def __init__(self):
win = Gtk.Window()
win.set_title("XYZ")
win.set_border_width(10)
box = Gtk.VBox(spacing=10)
win.add(box)
done_button = Gtk.Button(label="DONE")
done_button.connect("clicked", self.callback1)
#remove callback ??? callback1 should not be called when button is clicked.
done_button.connect("clicked", self.callback2)
box.pack_end(done_button, False, False, 0)
win.show_all()
win.maximize()
win.connect("delete-event", Gtk.main_quit)
def callback1(self, widget):
print "callback1"
def callback2(self, widget):
print "callback2"
if __name__ == '__main__':
test = Test()
Gtk.main()
Что можно сделать для удаления callback1.
Вы можете достичь этого, используя 'done_button.disconnect (handler_id)'. Тогда вам не нужен импорт GObject. 'id' также является встроенной функцией python, поэтому вы должны придерживаться другого имени. – elya5