【问题标题】:GUI freeze - Perl TkGUI 冻结 - Perl Tk
【发布时间】:2011-05-13 13:01:24
【问题描述】:

我使用 Perl/Tk 开发了一个小型应用程序。当应用程序中的一个按钮被按下时,应用程序将从 Web 获取数据。但问题是 GUI 会挂起,直到控制权返回。我知道这是由于延迟,所以主窗口没有响应。我使用了 update() 函数,但问题仍然存在。所以我四处搜索并知道我们可以使用线程来解决这个问题。但我不确定如何在 Perl/Tk 中使用线程。这是我的示例代码

use warnings;
use Tk;

my $mw = new MainWindow;

my $button = $mw -> Button(-text => "Fetch", 
        -command => \&FetchData)
    -> pack();
MainLoop;

sub FetchData
{
//Fetching data from Web
}

提前致谢。

【问题讨论】:

    标签: perl perltk


    【解决方案1】:

    从未尝试过,但此PerlMonks thread from 2008 "Perl Tk and Threads" 可能会帮助您继续前进。

    【讨论】:

    • 感谢您的链接,但他们没有谈论单击按钮时调用线程,所以您能告诉我该怎么做吗?
    • 从链接中得到了线索。谢谢
    • @Winbros - 好吧,在那次关于 PerlMonks 的讨论中,一个叫 zentara 的人说:“必须在调用任何 Tk 小部件之前创建线程。您在按钮中创建线程违反了该规则打回来。”所以看起来你必须先创建线程,然后通过共享变量进行通信。至少这是 zentara 的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2013-01-16
    • 2020-08-06
    • 2015-04-08
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多