【发布时间】:2023-03-25 04:26:02
【问题描述】:
我发现自己需要关闭一个从Gtk.Window 子类化的窗口。我最初连接 window.destroy 事件以关闭窗口到Gtk.main_quit 进行测试,但是当我将模块加载到我的主程序中时,我不能那样做,当然,不关闭主程序。当我编写一个函数时,我愚蠢地调用了window.destroy() 方法,这让我很愚蠢,导致最大递归错误。所以,我决定连接一个“删除事件”,然后调用window.destroy(),它仍然会递归,因为(据我所知)销毁事件调用删除事件。所以,我将销毁事件连接到一个函数并尝试调用:
window.emit('delete-event')
这有效,但导致需要另一个参数的错误。研究,我从 gtk2 了解到它需要是这样的:
window.emit("delete-event", gtk.gdk.Event(gtk.gdk.DELETE))
我在Gtk 下找不到Gdk,就像我在gtk 下找到gdk 一样。我不喜欢这个。我导入了 Gdk 并找到了 Gdk.Event,但没有与 gtk.gdk.DELETE variable 等效。我做了一个:
l = dir(Gdk)
for i in l:
if 'DELETE' in i:
print(i)
并没有在 Gdk 中定义 DELETE 变量。
我们如何从 Gtk 访问 Gdk?如果不是,我们如何翻译这些 gtk.gdk... 在 Gdk 下不存在的东西?
最终,我做到了:
del window
做我需要做的事情,但我仍然想知道如何在 Gtk3 中发出上面的信号以用于学习目的。
谢谢,
纳尼
【问题讨论】:
标签: python window destroy gtk3 gdk