无法更改 属性 的 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
.
我有一个代码可以在触发动作 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
.