GTK+实验

题目名称 GTK+实验
题目关键字 GTK+实验
题目录入时间 2015-5-24 13:47:12
题目内容
GTK+实验,完成课本实验9,最后打包上传(程序源代码+可运行文件)

简单了解一下glade生成源文件

在glade的源文件目录src下有7个代码文件,它们分别是:

  1. callbacks.c Glade生成的大部分空的回调函数所在的文件,你自己往里面添加代码
  2. callbacks.h (头文件)Glade生成的回调函数的定义文件
  3. main.c 主函数
  4. support.h (头文件)支持文件

在galde生成的devcpp目录里有2个文件

  1. config.h Glade 生成的配置文件
  2. gtk1.dev Glade生成的devcpp工程文件(就是你保存时启的那个名子)。

需要你自己编写代码的文件只有三个(其它文件不要动),它们是:
main.c (一般只需做少量的修改)
callbacks.h (一般只需做少量的修改,甚至不作修改)
callbacks.c (函数的具体实现部分,你需要在这里编写一定量的代码)

// 简单了解一下glade生成的界面文件interface.c 

GtkWidget* 
create_window1 (void) 
{ 
 GtkWidget *window1;   /*定义一个窗口构件*/ 
 GtkWidget *fixed1;  /*定义一个固定容器构件,用于放置其它构件*/ 
 GtkWidget *label1;  /*定义一个标签构件*/ 

 window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);  /*新建一个窗口*/ 
 gtk_window_set_title (GTK_WINDOW (window1), _("window1")); /*设置窗口的标题*/ 
 gtk_window_set_default_size (GTK_WINDOW (window1), 400, 300);  /*设置窗口的默认大小为400,300*/ 

 fixed1 = gtk_fixed_new (); /*新建一个固定容器*/ 
 gtk_widget_show (fixed1);  /*显示固定容器*/ 
 gtk_container_add (GTK_CONTAINER (window1), fixed1);  /*添加固定容器到窗口*/ 

label1 = gtk_label_new (_("/346/254/242/350/277/216/350/265/260/350/277/233GTK/347/232/204/344/270/226/347/225/214")); /*新建一个标签*/ 
 gtk_widget_show (label1);  /*显示标签*/ 
 gtk_fixed_put (GTK_FIXED (fixed1), label1, 120, 72); /*把标签添加到固定容器中*/ 
 gtk_widget_set_size_request (label1, 136, 40); /*设置标签的大小*/ 

 /* Store pointers to all widgets, for use by lookup_widget(). */ 
 GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1"); 
 GLADE_HOOKUP_OBJECT (window1, fixed1, "fixed1"); 
 GLADE_HOOKUP_OBJECT (window1, label1, "label1"); 

 return window1; 
} 
/*
(点评:版本不一样,里面的代码可能有一些不同)

(这部分内容,能理解多少,理解多少,看不懂也不要紧。) 
文件:main.c   

只作部分解释,以后你水平高了,慢慢看吧! 
以下代码节选自main.c 
*/
int    main (int argc, char *argv[])     
{ 
 GtkWidget *window1;  /*定义window1构件*/ 

 gchar *pixmap_dir; 
#ifdef G_OS_WIN32 
 package_prefix = g_win32_get_package_installation_directory (NULL, NULL); 
 package_data_dir = g_build_filename (package_prefix, "share", NULL); 
 package_locale_dir = g_build_filename (package_prefix, "share", "locale", NULL); 
#endif 

#ifdef ENABLE_NLS 
 bindtextdomain (GETTEXT_PACKAGE, package_locale_dir); 
 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 
 textdomain (GETTEXT_PACKAGE); 
#endif 

 gtk_set_locale ();      /*通过调用这个函数才可显示中文*/ 
 gtk_init (&argc, &argv);  /*GTK初始化*/ 

 pixmap_dir = g_build_filename (package_data_dir, PACKAGE, "pixmaps", NULL); 
 add_pixmap_directory (pixmap_dir); 
 g_free (pixmap_dir); 

 /* 
  * The following code was added by Glade to create one of each component 
  * (except popup menus), just so that you see something after building 
  * the project. Delete any components that you don't want shown initially. 
  */ 
 window1 = create_window1 ();    /*创建window1构件*/ 
 gtk_widget_show (window1);   /**显示window1构件/ 
 g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK(gtk_main_quit), 
                   NULL); 
 /*为window1构件的“destroy”事件,关联函数, 
   也就是当单击window1的关闭按钮时,关闭window1,同时退出gtk*/ 
 gtk_main ();   /*gtk主程序开始执行*/ 

#ifdef G_OS_WIN32 
 g_free (package_prefix); 
 g_free (package_data_dir); 
 g_free (package_locale_dir); 
#endif 

 return 0; 
}

通过一个例子来说明文本输入构件(text entry)的使用。

文本输入构件 (二)

一、用glade设计界面
1、新建glade工程

2、放置各种构件:新建window构件(window1),在window1上放置固定容器构件(fixed positions),在固定容器构件上放置文本输入构件(entry1)。

3、为文本输入构件entry1添加changed信号响应(其它程序设计语言中为事件响应)on_entry1_changed,一定注意在signals选项卡中把object设置为entry1。

4、单击Build按钮生成源代码。

二、添加代码

只需在callbacks.c中添加三行代码

   //Callbacks.c

   void  on_entry1_changed(GtkEditable     *editable,
 gpointer user_data)
{

       const gchar *text1;

       text1 = gtk_entry_get_text(GTK_ENTRY(editable));

       printf("text entry : %s/n",text1);

   }

三、运行程序
编译、运行程序,在文本输入框内随变输入几个英文字母,看看运行效果。
注:在linux下,操作很简单,点击 glade 的 build 就会自动产生代码,然后运行改目录下的autogen.sh运行make ,就会在
src 目录下产生可执行的程序

调用glade的界面

Gtk+/Glade编程(二)–入门

  builder = gtk_builder_new();
    gtk_builder_add_from_file(builder, "dec_inc.glade", NULL);
    window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));

懒人写法

 window1 = create_window1 ();
  entry1 = lookup_widget(GTK_WIDGET(window1), "entry1");
  entry3 = lookup_widget(GTK_WIDGET(window1), "entry3");
  button1 = lookup_widget(GTK_WIDGET(window1), "button1"); 
  button2 = lookup_widget(GTK_WIDGET(window1), "button2");
  g_signal_connect(GTK_OBJECT(window1),"destroy",GTK_SIGNAL_FUNC(closeApp),NULL);
  g_signal_connect(GTK_OBJECT(button1),"clicked",GTK_SIGNAL_FUNC(button1_clicked),(gpointer)entry1); 


  g_signal_connect(GTK_OBJECT(button2),"clicked",GTK_SIGNAL_FUNC(button2_clicked),(gpointer)entry3);
  gtk_widget_show (window1);
题目名称 linux实验-基本指令1 题目关键字 linux实验-基本指令1 题目录入时间 2013-4-1 22:36:02 题目内容 1、root帐号登录,查看/tmp目录,如果/tmp目录下没有子目录myshare,则建立该目录。 2、创建帐号testuser。 3、把myshare目录及其目录下的所有文件和子目录的拥有者该为testuser,工作组改为users。 4、切换至testuser帐号。进入/tmp/myshare目录,采用vim编辑器编写以上程序,程序名称为hello.sh: #!/bin/bash echo "app start" echo -e func (){ echo "hello world!" } func echo -e echo "app end" 5、保存hello.sh后,给予hello.sh拥有者可读、可写和可执行的权限,同组可读可执行,其他人可执行权限。 6、输入./hello.sh,观察程序输出的效果。 7、进入testuser的用户主目录,在这个目录下创建hello.sh的软链接,同时拷贝hello.sh到该目录下并改名为hello.sh.bak,要求拷贝时保留文件属性值。 8、退出testuser帐号,回到root帐号,从/开始查找后缀名为.conf的所有文件,把输出结果重定向到testuser帐号的主目录下的output.txt文件。 9、在上一步操作的.conf文件中找出文件容量最大的和最小那个,并把这两个文件的容量大小输出到output.txt文件中。 10、统计出系统中有多少个用户帐号,把数量输出到output.txt文件中。 11、把output.txt文件转换为windows记事本可正规打开的格式。 12、tar打包压缩testuser帐号主目录下的所有文件。 13、用U盘把上一步打包压缩文件拷贝到U盘上。 14、执行userdel -r testuser,执行rm -fr myshare 题目创建人 题目注释 把打包压缩文件提交即可。 题目名称 linux-课题练习1 题目关键字 linux-课题练习1 题目录入时间 2013-4-15 12:21:53 题目内容 1、创建组testgroup; 2、创建用户a2012,先采用默认设置创建,然后使该用户加入testgroup组。 3、创建用户a2013,其用户主目录为/tmp/a2013,其主组为testgroup,附加组为users。 4、用id命令显示a2012和a2013用户信息,并且把这些信息记录到日志文件/tmp/test.log中。 5、参考书本98-99页crontab命令内容,使用root执行crontab -e,编写时程表,完成每隔5分钟把当前时间追加进/tmp/test.log中。 6、执行crontab -l,把输出内容追加进/tmp/test.log。 7、待完成2次时间记录追加后,执行crontab -r删除当前的时程表。 8、把/tmp/test.log拷贝到windows中(注意文本格式的转换),采用记事本打开,看是否看到完整内容。 题目创建人 题目注释 课题练习,做完后直接把test.log文件提交上来。 题目名称 linux课后作业1 题目关键字 linux课后作业1 题目录入时间 2013-5-6 10:23:32 题目内容 完成课本实验6第一题:菜单驱动程序。 题目创建人 题目注释 本题为当天提交,把程序文件以附件形式提交即可。 题目名称 linux shell程序设计实验1 题目关键字 linux shell程序设计实验1 题目录入时间 2013-5-6 10:25:36 题目内容 完成课本实验6的第2题,要有输入错误处理。 题目创建人 题目注释 把程序文件以附件形式提交即可。 题目名称 linux shell程序设计实验2 题目关键字 linux shell程序设计实验2 题目录入时间 2013-5-6 10:26:43 题目内容 按要求完成课本实验7。 题目创建人 题目注释 把3个程序文件打包提交即可。 题目名称 linux gcc实验 题目关键字 linux gcc实验 题目录入时间 2013-5-20 14:27:52 题目内容 课本实验8第2题 题目创建人 题目注释 请提交Makefile文件 题目名称 Linux下MYSQL操作 题目关键字 MYSQL实验 题目录入时间 2015-4-15 11:19:01 题目内容 1、在Linux下检查是否有mysql,如果没有,请安装。版本上必须是5.5以上,越新越好! 2、在mysql下创建数据库,名称为 testdb,内有表 linuxtest,表字段如下: userid (自己的学号),varchar 50,关键字 mysql_version (当前mysql版本号), varchar 50 linux_version (当前发行版的uname -a 返回值),varchar 100 eth0_HW (eth0物理地址),varchar 50 3、insert对应的数据到表 linuxtest 4、导出该数据库的sql文件,命名为 学号.sql 5、提交该sql文件 题目创建人 题目注释 题目名称 Linux网络实验1-wget+lynx 题目关键字 Linux网络实验1-wget+lynx 题目录入时间 2015-4-20 21:46:19 题目内容 1、让你的linux接入互联网,如果你是虚拟机安装,可以采用桥接本地网卡的方式上网(课堂上有介绍该方法)。如果你是独立安装linux请自行解决。配置好IP地址和网关,DNS设置两个(8.8.8.8和114.114.114.114)。 2、已root登录系统,创建目录webtest,进入webtest目录,分别把ifcfg-eth0文件及resolv.conf文件内容追加至result.txt,。 3、执行echo "1234567890这是分隔线0987654321" >> result.txt traceroute www.scau.edu.cn >> result.txt 4、执行wget http://www.baidu.com 5、以源码方式安装lynx 官方网站:http://lynx.isc.org/ 下载地址:http://lynx.isc.org/current/ 请选择最新版本 安装示例: wget http://lynx.isc.org/current/lynx2.8.8rel.2.tar.gz 解压lynx2.8.8rel.2.tar.gz 进入解压后的目录 依次执行 ./configure make make install 6、echo "1234567890这是分隔线0987654321" >> result.txt 7、执行whereis lynx >> result.txt 8、echo "1234567890这是分隔线0987654321" >> result.txt 9、lynx -dump http://www.baidu.com >> result.txt 10、提交result.txt文件 题目创建人 题目注释 题目名称 GTK+实验 题目关键字 GTK+实验 题目录入时间 2015-5-24 13:47:12 题目内容 GTK+实验,完成课本实验9,最后打包上传(程序源代码+可运行文件) 题目创建人 题目注释 题目名称 决战Linux(1) 题目关键字 LAMP LNMP 题目录入时间 2015-4-28 22:16:03 题目内容 在LAMP、LNMP等环境下,任意挑选下列2种或以上动态网页语言,写出一个页面,读取MYSQL实验中的数据表数据。 (PHP,JSP,Perl,Python,Ruby,Go,ASP.NET) 注意:不同的动态网页语言,所要求的具体环境有可能不同,需要自行搭建。 该实验为综合性实验,最终需要提交综合性实验报告。报告提纲大致如下: 1、实验步骤描述(有图有真像) (1)第一种动态语言 a、实验环境描述 b、系统架构图 c、相关配置总结 d、核心代码总结 e、页面效果截图 (2)第二种动态语言 (3)第三种动态语言 以下同。 2、实验总结(有对比有分析有感想) 题目创建人 题目注释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值