无法更改 属性 的 GTK 按钮

Cannot change property of GTK button

我有一个代码可以在触发动作 clicked 后将 gtk.Button 的灵​​敏度更改为 False。 后台进程完成后,我想将其更改回 True 但由于某种原因它不起作用。

我调用来改变它的函数是波纹管show_dialog。打印按钮对象给我:

<Gtk.Button object at 0x7ff41b1bed38 (GtkButton at 0x1f0cf80)>

如图所示尝试设置标签和灵敏度无效。令我感兴趣的是,在那之后执行的成功对话完美无缺。 所有小部件都来自 .glade 文件。

这里有什么我遗漏的吗?

def show_dialog(self):
    button = self.builder.get_object('button')
    print(button)
    button.set_label('Changed')
    button.set_sensitive(True)
    success_dialog = self.builder.get_object('parse_success_dialog')
    success_dialog.set_transient_for(self.window)
    response = success_dialog.run()
    if response == Gtk.ResponseType.OK:
        success_dialog.destroy()

主线程中的小部件的修改 window 不能在主线程之外完成。 问题的方法是在处理程序 class 中执行的,这样它就无法从主 window 修改按钮。 这个问题的解决方案是创建一个 idle-add 调用,调用主 window 中的函数并修改按钮。

所以在我的 Handler 中(注意函数来自 window):

GLib.idle_add(self.window.show_dialog)

并且在 window class 中我将所有函数 show_dialog.