2016-08-04 125 views
0

我一直在尝试使用php-gtk制作一个非常简单的PHP应用程序。该程序执行一些处理并输出该进程的状态。问题是应用程序在该过程完成之前不会启动。 我看到while (Gtk::events_pending()) {Gtk::main_iteration();}行允许主循环在处理过程中继续,但它不适用于我。 下面的代码:PHP GTK刷新GUI

<?php 
if(!class_exists('gtk')){ 
    exit('php-gtk2!!'); 
} 

$wnd = new GtkWindow(); 
$wnd->set_size_request(400, 200); 
$wnd->set_title('test'); 
$wnd->connect_simple('destroy', array('gtk', 'main_quit')); 

$lbl = new GtkLabel('1/3'); 

function processing($lbl){ 
    while (Gtk::events_pending()) {Gtk::main_iteration();} 
    sleep(2); 
    $lbl->set_text('2/3'); 
    sleep(2); 
    $lbl->set_text('3/3'); 
} 

processing($lbl); 

$wnd->add($lbl); 
$wnd->show_all(); 
Gtk::main(); 

> 我试图把该行上随处可见的代码,我不知道为什么它不工作。 任何帮助将非常感激。先谢谢你!

(注:sleep功能只是模拟一些繁重的处理)

回答

0

既然你想为你的GUI运行在同一时间做工作,你将需要使用第二个线程,从通信该线程连接到GUI线程以获取GUI更新。为此,请使用gdk_threads_add_idle()g_idle_add()函数。 不要直接从其他线程调用GTK +函数!

+0

谢谢!我不知道这两个功能 – gabyarg25