php gtk不更新了,[新人求助] gtk控件动态更新
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主可以通过GMainLoop(在Gtk内会包装成在gtk_main())和GSource等方法.相关知识请查阅Glib的手册
以下是Glib手册相关内容及用到的函数devhelp截图,可到glib网站查看
如果对Glib的对象系统感兴趣可查看相应Gobject手册(跟Glib手册是独立分开的),如下图(devhelp截图,可到glib网站查看)
这里根据楼主的情况,写了个例子Sample,希望对你或其他人有用.
这是运行时截图
以下是代码:
/*
* main.c
*
* Created on: 2018年3月5日
* Author: tom
*/
#include
#include
#include
#include
gboolean my_timeout_func (gpointer user_data){
GtkEntry *entry=user_data;
gint index=g_object_get_data(entry,"entry_index");//这里直接忽略GPOINTER_TO_INT(),按编程习惯应写成 gint index=GPOINTER_TO_INT(g_object_get_data(entry,"entry_index"));
gint count=g_object_get_data(entry,"entry_count");//同上
if(count>=10){
return G_SOURCE_REMOVE;//移除该"定时GSource",GMainLoop往后不再执行该"定时GSource".表现为GtkEntry内容不再更新.
}
count++;
g_object_set_data(entry,"entry_count",GINT_TO_POINTER(count));//更新GtkEntry的timeout次数,原内部相应数据会被覆盖;
gchar *str=g_strdup_printf("GtkEntry%d:timeout %d times",index,count);//创建要显示的"字符串".
gtk_entry_set_text(entry,str);//把刚生成的"字符串"设置GtkEntry显示的字符串
g_free(str);//由于创建的"字符串"是内存动态分配,须手动释放字符串
return G_SOURCE_CONTINUE;//继续执行该"定时GSource",表现为GtkEntry内容定时更新.
};
int main(int argc,char *argv[]){
gtk_init(&argc,&argv);
gint i=0;
GtkWindow *mwin=gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkBox *box=gtk_box_new(GTK_ORIENTATION_VERTICAL,10);//创建可包含10个GtkEntry的GtkBox容器.
GtkEntry *entry[10];//创建Entry控件指针的数组
for(i=0;i<10;i++){
entry[i]=gtk_entry_new();
//由于GtkEntry是承继GObject,所以可以用GObject的方法操作GtkEntry,这里涉及一些GObject的对象系统知识,请查看Glib-Object的开发手册(注意:该手册跟Glib开发手册是分开独立);
//这里注意一下,GINT_TO_POINTER(i)是把int数值转成指针形式,可通过GPOINTER_TO_INT()把数值转回int形式,若嫌麻烦可忽略不用,只是可读性差些.
g_object_set_data(entry[i],"entry_index",GINT_TO_POINTER(i));//往GtkEntry附加自定义数据"entry_index",用于处理GtkEntry的编号
g_object_set_data(entry[i],"entry_count",GINT_TO_POINTER(0));//往GtkEntry附加自定义数据"entry_count",用于处理GtkEntry的timeout次数
g_timeout_add(500,my_timeout_func,entry[i]);//用g_timeout_***方法往主循环添加定时执行函数,每500ms执行函数一次
//还有类似g_timeout_add_seconds(),只是计时单位为妙.下面的注释的语句跟上面功能一样.
//g_timeout_add_seconds(5,my_timeout_func,entry[i]);
//glib还有类似g_idle_add()方法,在Gmain空闲的时候随机执行指定函数,具体请看Glib开发手册GMainLoop一节;
gtk_box_pack_start(box,entry[i],FALSE,FALSE,0);//把GtkEntry放入GtkBox容器;
}
gtk_container_add(mwin,box);//把GtkBox容器放入主窗口;
g_signal_connect(mwin,"delete_event",gtk_main_quit,NULL);
gtk_widget_show_all(mwin);
gtk_main();
return EXIT_SUCCESS;
}
php gtk不更新了,[新人求助] gtk控件动态更新相关推荐
- select2控件动态更新option
原文连接:https://blog.csdn.net/u010784959/article/details/77893674 ------------------------------------- ...
- Word图片上传控件(WordPaster)更新-2.0.15版本
更新说明: 1. 增加对webp图片的支持,支持微信公众号图片的下载. 效果参考:http://www.ncmem.com/doc/view.aspx?id=9761f8ce4fe04d0ab0f ...
- ASP.net GridView控件(删除/更新功能)
一.说明 部分代码的运用放在以往的教程中,本部分只讲解删除/更新功能 二.前端 我们在其控件上添加事件: 红色为行删除事件 绿色为行更新事件 双击后,即可在后台自动生成对应的方法体 其代码显示: &l ...
- React-Native开发中常用的第三方控件持续更新
2023.03.22更新 React Native ECharts 项目是一个开源的库,用于在 React Native 应用程序中创建交互式图表.通过用户友好的设计和简单的 API,开发者可以创建各 ...
- html表格内容自动更新,ElementUI table 组件展开 expand,动态更新数据时,视图没有自动更新...
这是因为在给table的数据赋值时,展开的视图对应的字段不存在.(动态增加属性) 拿到table数据后,先把展开字段初始化,然后再赋值,问题就解决了~~ 比如,之前是:this.list = api. ...
- 【更新】Project 读写管理控件Aspose.Tasks V17.5发布 | 附下载
2019独角兽企业重金招聘Python工程师标准>>> Aspose.Tasks for .NET 17.5 更新 功能和改进 核心 概述 类别 TASKSNET-1918 具有自定 ...
- java script 添加控件,【更新】GLG工具包Visualization and HMI Toolkit更新至v3.6,支持Java Script...
Visualization and HMI Toolkit的为开发高级图形的动态界面而设计的艺术化的框架:它不仅仅是简单的按键与菜单,它是全动态的能显示动态数据以及能反映用户互动的图片对象.它不仅仅是 ...
- python所有变量更新_在python中,如何动态更新变量?
您正在使用一个id(而不是一个id列表)在元组上循环:((1424794931452.0,), (1424794931645.0,), (1424794931821.0,), (14247949320 ...
- 编历修改工作表中的控件属性(更新条形码)
=EMBED("BARCODE.BarCodeCtrl.1","") 宏: Sub 按钮86_Click() Dim i As Integer For i = ...
- dymola汇总学习篇-控件-Modelica-Mechanics-20200722更新
[1]旋转副revolute 包含frame_a+frame_b与flange_a+flange_b两组关联 frame_a+frame_b是用来旋转的,我把flame_a想象成不动的法兰,frame ...
最新文章
- 误删了数据库,我只能跑路么?
- Javascript小括号“()”的多义性
- AVA:Netflix的剧照个性化甄选平台
- Polygonal-Light Shading with LTC
- 少女风vue组件库制作全攻略~~
- Java getinteger的用法,Java AtomicInteger类的使用方法详解
- 辗转相除法求最大公因数
- java 俄罗斯方块 教程_俄罗斯方块
- cbc cryptojs 前后端_AES加密前后端加解密不一致
- 力扣 1723. 完成所有工作的最短时间 二分+回溯+剪枝/状压dp
- 计算机软件ae常用英语,AE英文插件该怎么翻译?
- FPGA的NIOS-||的开发入门
- Linux C语言实现TCP客户端与服务器
- 【总结】C#上传excel文件到Sql server数据库
- Vue 实现可拖拽、拖拽组件
- Java多线程,Android多线程
- STM32 IAP 在线升级详解
- BL9342降压型电源芯片
- gjson - Golang 解析 JSON
- HTML+CSS第二部分_01(html进阶)
热门文章
- Linux 中复制问题,错误显示 cp:omitting directory
- C++学习(一五九)Qt的场景图Scene Graph
- springmvc视图解析器详解
- [初学Python]利用某网站的功能写一个磁力链转种子工具
- 安卓选择市区的省市区联动
- c程序怎样往mysql里面添加字符串指针指向的字符串
- python之pandas基础知识以及练习题
- linux虚拟机+显卡驱动,ubuntu12.4优化android虚拟机和安装intel显卡驱动
- 实验一 第2关:从自然数中取3个数进行组合之递归算法任务描述
- 关于程序员的那些段子,你能看懂几个?