PHP GTK刷新GUI
问题描述:
我一直在尝试使用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
功能只是模拟一些繁重的处理)
答
既然你想为你的GUI运行在同一时间做工作,你将需要使用第二个线程,从通信该线程连接到GUI线程以获取GUI更新。为此,请使用gdk_threads_add_idle()
或g_idle_add()
函数。 不要直接从其他线程调用GTK +函数!
谢谢!我不知道这两个功能 – gabyarg25