PHP GTK 刷新 GUI
PHP GTK refreshing GUI
我一直在尝试使用 php-gtk 制作一个非常简单的 PHP 应用程序。该程序进行一些处理并输出该进程的状态。问题是应用程序在进程完成之前不会启动。
我读到 while (Gtk::events_pending()) {Gtk::main_iteration();}
行允许主循环在处理时继续,但它对我不起作用。
这是代码:
<?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+ 函数!
我一直在尝试使用 php-gtk 制作一个非常简单的 PHP 应用程序。该程序进行一些处理并输出该进程的状态。问题是应用程序在进程完成之前不会启动。
我读到 while (Gtk::events_pending()) {Gtk::main_iteration();}
行允许主循环在处理时继续,但它对我不起作用。
这是代码:
<?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+ 函数!