GTK循环向标签写内容导致窗口白屏的问题

用GTK编写客户端,需要不停的获取数据然后写入标签,一段时间后,窗口变成白屏,控件都没有显示出来,但是按钮仍然可以点击,点击后有效果出现,就是看不见,效果如下:
这里写图片描述
这里写图片描述

这是不停的交替向标签写入“hello”和“world”内容,每一秒写一次。
在虚拟中运行了近20个小时后,窗口变成白屏。

这里写图片描述

具体原因不明,写下来以作提醒。

GTK代码如下

#include <gtk/gtk.h>  
#include <pthread.h> 
void *decrease(void *arg)  
{  
    int flag = 0;
    while(1){
        if(flag == 0){
            gtk_label_set_text((GtkWidget *)arg, "hello");
            flag = 1;
        }else{
            gtk_label_set_text((GtkWidget *)arg, "world");
            flag = 0;
        }
        sleep(1);
    }

}  
int main(int argc, char *argv[])   
{  
    GtkWidget *label;  
    GtkWidget *window;  
    GtkWidget *frame;   
    pthread_t dhclient_id;
    gtk_init(&argc, &argv);  

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);  
    gtk_window_set_default_size(GTK_WINDOW(window), 250, 180);  
    gtk_window_set_title(GTK_WINDOW(window), "一个小例子");  

    frame = gtk_fixed_new();  
    gtk_container_add(GTK_CONTAINER(window), frame);  
    label = gtk_label_new("0"); 
    gtk_fixed_put(GTK_FIXED(frame), label, 100, 58);  
    gtk_widget_show_all(window);  
    g_signal_connect(window, "destroy",G_CALLBACK(gtk_main_quit), NULL);  
    pthread_create(&dhclient_id,NULL,decrease,label);
    pthread_detach(dhclient_id);

    gtk_main();    
    return 0;  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值