实例介绍
【实例截图】
【核心代码】
//thread.c #include <gtk/gtk.h> static GtkWidget *label; static GtkWidget *fixed; static GtkWidget *label1; static GtkWidget *label2; static gchar *title[10]={"yumo","istruely","averyvery","handsome","bigboy","","","","",""}; static gchar *num[10]={"10","9","8","7","6","5","4","3","2","1",""}; GtkWidget *entry1; gint count=0; gint m=0; gint n=0; static gint sign; //////////线程实现 int image_go1(GtkWidget *label) { gint x,y; x = -30; y = 50; g_usleep(1500000); for(;;) { if(x==400) break; g_usleep(15000); gdk_threads_enter(); gtk_fixed_move(GTK_FIXED(fixed),label, x, y); x = x 1; gdk_threads_leave(); } return 0; } int image_go2(GtkWidget *label) { gint x,y; x = -30; y = 20; for(;;) { if(x==400) break; g_usleep(15000); gdk_threads_enter(); gtk_fixed_move(GTK_FIXED(fixed),label, x, y); x = x 1; gdk_threads_leave(); } return 0; } //////////倒数计时 gint backcount() { gtk_label_set_text(GTK_LABEL(label),num[n]); n ; if(n>10) return 0; } //////////button按钮效果 int on_begin(GtkWidget* button,gpointer data) { //gtk_window_set_focus(GTK_WINDOW(window),entry1); gtk_widget_set_sensitive(button,FALSE); sign=g_timeout_add(1000,backcount,NULL); g_thread_create(image_go1, label1, FALSE, NULL); g_thread_create(image_go2, label2, FALSE, NULL); return 0; } //////////计算正确单词 void countnum(GtkWidget *button,gpointer data) { //gint backcount(); const char *password=gtk_entry_get_text(GTK_ENTRY((GtkWidget *)data)); if(strcmp(title[m],password)==0) { count; printf("还好 第%d个单词输对了\n",(m 1)); } else printf("2货 第%d个单词输错了\n",(m 1)); gtk_entry_set_text(GTK_ENTRY(entry1),""); m ; } int main(int argc, char* argv[]) { GtkWidget *window; GtkWidget *vbox, *viewport, *button; if(!g_thread_supported()) g_thread_init(NULL); gdk_threads_init(); gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //gtk_window_set_focus(GTK_WINDOW(window),entry1); gtk_window_set_title(GTK_WINDOW(window),"Ywriter"); g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL); gtk_container_set_border_width(GTK_CONTAINER(window),2); vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(window),vbox); viewport = gtk_viewport_new(NULL,NULL); gtk_box_pack_start(GTK_BOX(vbox),viewport,FALSE,FALSE,5); fixed = gtk_fixed_new(); gtk_widget_set_usize(fixed,550,340); gtk_container_add(GTK_CONTAINER(viewport),fixed); entry1=gtk_entry_new(); gtk_fixed_put(GTK_FIXED(fixed),entry1,200,250); //gtk_window_set_focus(GTK_WINDOW(window),entry1); button = gtk_button_new_with_label("start"); gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,5); g_signal_connect(G_OBJECT(button),"released",G_CALLBACK(on_begin),NULL); //gtk_window_set_focus(GTK_WINDOW(window),entry1); /////////////// //////////////////////////////////////////////////// label1=gtk_label_new(title[0]); label2=gtk_label_new(title[1]); gtk_fixed_put(GTK_FIXED(fixed),label1,-80,50); gtk_fixed_put(GTK_FIXED(fixed),label2,-80,20); label=gtk_label_new(""); gtk_fixed_put(GTK_FIXED(fixed),label,200,190); //////////////////////////////////////////////////// g_signal_connect(GTK_OBJECT(entry1),"activate",GTK_SIGNAL_FUNC(countnum),entry1); gtk_widget_show_all(window); gdk_threads_enter(); gtk_main(); gdk_threads_leave(); return FALSE; }
标签: linux
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论