gpt4 book ai didi

python - GTK+3+Python : "Loading..." dialog

转载 作者:行者123 更新时间:2023-11-30 22:56:24 24 4
gpt4 key购买 nike

我的主应用程序中有一个如下所示的函数:

def foo(stuff):

a_line_that_takes_a_while(stuff)

return result

我正在尝试添加一个对话框以在 a_line_that_takes_a_while 之前显示,并在该行执行后立即销毁它。

我已经尝试过:

def foo(stuff):
dialog = Gtk.MessageDialog(...)
dialog.show_all()

a_line_that_takes_a_while(stuff)

dialog.destroy()

return result

但令人惊讶的是,该对话框在 a_line_that_takes_a_while 已经执行时出现。当然,我不能使用dialog.run(),因为这会阻止我的应用程序的主循环。

有什么想法吗?

最佳答案

对 GTK 的调用实际上所做的就是对主循环期间发生的操作进行排队。对话框是一种特殊情况,当您调用dialog.run() 来阻止允许某些更新时。您的 foo 函数指示 GTK 创建一个对话框,然后在它开始尝试执行工作之前销毁它。

Threads应该做这项工作。这里最大的问题是 GTK 不是线程安全的。因此,如果您决定使用 native Python 线程,请务必小心。另外,如果您正在进行磁盘操作,请考虑 GFile的异步回调。它们可能会为您节省一些重新发明轮子的时间。

关于python - GTK+3+Python : "Loading..." dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37012343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com