整体思路:建立一个table,建立一个button,在对这个button处理后,按照table的(0,1,0,1)(左右上下)位置来嵌入button,注意的是,这里的button可以重复使用,就像接下来的程序中只用一个button就完成了整个键盘的按键。

利用gtk的table实现二维的button,button较多时编程比较繁琐。

#include <gtk/gtk.h>
void callback( GtkWidget *widget, gpointer data)
{g_print ("%s", (char *) data);
}
gint delete_event( GtkWidget *widget, GdkEvent *event,gpointer data )
{gtk_main_quit ();return FALSE;
}
int main( int argc, char *argv[] )
{GtkWidget *window;GtkWidget *button;GtkWidget *table;gtk_init (&argc, &argv);window = gtk_window_new (GTK_WINDOW_TOPLEVEL);gtk_window_set_title (GTK_WINDOW (window), "Rong Tao'sKeyboard");g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL);gtk_container_set_border_width (GTK_CONTAINER(window), 20);table = gtk_table_new (4, 20, TRUE);gtk_container_add (GTK_CONTAINER (window), table);button = gtk_button_new_with_label ("Q");g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (callback), (gpointer) "q");gtk_table_attach_defaults (GTK_TABLE (table), button,0, 2, 0, 1);gtk_widget_show (button);button = gtk_button_new_with_label ("W");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "w");gtk_table_attach_defaults (GTK_TABLE (table), button, 2, 4, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("E");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "e");gtk_table_attach_defaults (GTK_TABLE (table), button, 4, 6, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("R");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "r");gtk_table_attach_defaults (GTK_TABLE (table), button, 6, 8, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("T");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "t");gtk_table_attach_defaults (GTK_TABLE (table), button, 8, 10, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("Y");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "y");gtk_table_attach_defaults (GTK_TABLE (table), button, 10, 12, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("U");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "u");gtk_table_attach_defaults (GTK_TABLE (table), button, 12, 14, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("I");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "i");gtk_table_attach_defaults (GTK_TABLE (table), button, 14, 16, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("O");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "o");gtk_table_attach_defaults (GTK_TABLE (table), button, 16, 18, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("P");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "p");gtk_table_attach_defaults (GTK_TABLE (table), button, 18, 20, 0,1);gtk_widget_show (button);button = gtk_button_new_with_label ("A");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "a");gtk_table_attach_defaults (GTK_TABLE (table), button, 1, 3, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("S");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "s");gtk_table_attach_defaults (GTK_TABLE (table), button, 3, 5, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("D");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "d");gtk_table_attach_defaults (GTK_TABLE (table), button, 5, 7, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("F");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "f");gtk_table_attach_defaults (GTK_TABLE (table), button, 7, 9, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("G");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "g");gtk_table_attach_defaults (GTK_TABLE (table), button, 9, 11, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("H");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "h");gtk_table_attach_defaults (GTK_TABLE (table), button, 11, 13, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("J");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "j");gtk_table_attach_defaults (GTK_TABLE (table), button, 13, 15, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("K");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "k");gtk_table_attach_defaults (GTK_TABLE (table), button, 15, 17, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("L");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "l");gtk_table_attach_defaults (GTK_TABLE (table), button, 17, 19, 1,2);gtk_widget_show (button);button = gtk_button_new_with_label ("'");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "'");gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 2, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("Z");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "z");gtk_table_attach_defaults (GTK_TABLE (table), button, 2, 4, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("X");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "x");gtk_table_attach_defaults (GTK_TABLE (table), button, 4, 6, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("C");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "c");gtk_table_attach_defaults (GTK_TABLE (table), button, 6, 8, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("V");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "v");gtk_table_attach_defaults (GTK_TABLE (table), button, 8, 10, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("B");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "b");gtk_table_attach_defaults (GTK_TABLE (table), button, 10, 12, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("N");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "n");gtk_table_attach_defaults (GTK_TABLE (table), button, 12, 14, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("M");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "m");gtk_table_attach_defaults (GTK_TABLE (table), button, 14, 16, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label (",");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) ",");gtk_table_attach_defaults (GTK_TABLE (table), button, 16, 18, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label (".");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) ".");gtk_table_attach_defaults (GTK_TABLE (table), button, 18, 20, 2,3);gtk_widget_show (button);button = gtk_button_new_with_label ("Enter");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) "\n");gtk_table_attach_defaults (GTK_TABLE (table), button, 2, 6, 3,4);gtk_widget_show (button);button = gtk_button_new_with_label ("Space");g_signal_connect (G_OBJECT (button), "clicked",  G_CALLBACK(callback), (gpointer) " ");gtk_table_attach_defaults (GTK_TABLE (table), button, 6, 16, 3,4);gtk_widget_show (button);button = gtk_button_new_with_label ("Quit");g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (delete_event), NULL);gtk_table_attach_defaults (GTK_TABLE (table), button,16, 19, 3, 4);gtk_widget_show (button);gtk_widget_show (table);gtk_widget_show (window);gtk_main ();return 0;
}

Gtk实现GUI键盘并终端显示相关推荐

  1. wpf计算字符大小占像素_LCD作为终端显示字符串的过程

    LCD作为终端显示字符串的过程 1.本文目的 2.资源评估 3.显示原理 4.嵌入式上汉字处理 5.结果验证与展示 6.总结 1.本文目的 做嵌入式图形开发,我们往往都会利用到各种GUI进行交互设计, ...

  2. printf利用转译字符在终端显示进度条(时钟)-zhuan

    printf("\33[s"); 后跟下句才能固定显示,不知道为什么 printf("\33[0;0H\33[0m"); void processbar() { ...

  3. dev layoutview 怎么显示大小_Liunx驱动学习:基于imx6ul 驱动oledssd1306 实现终端显示...

    说明: 在学习linux驱动的过程中,绕不开的就是LCD驱动,网上大部分教程都是教大家如果使用分辨率比较高的LCD作为Linux开发板的显示终端,但并没有讲过如果驱动spi或者iic这种低分辨率低帧率 ...

  4. Mac终端显示 bogon的问题

    Mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,这个单词是虚拟.虚伪的意思.终端会先向DNS服务器 ...

  5. ubuntu终端显示乱码的解决

    ubuntu终端显示乱码的解决 背景 在ubuntu终端,用diff命令比较两个源文件时,发现输出乱码,如下图所示: 原因 Ubuntu默认编码是UTF-8,可以用locale命令查看,在我电脑上查看 ...

  6. switch 根据键盘录入成绩 显示分数及判断等级(第三次)

    package Day; import java.util.Scanner; //根据键盘录入成绩 显示分数及判断等级 public class Test_09 { // 需求分析:根据成绩的范围80 ...

  7. ios如何判断键盘是否已经显示

    ios如何判断键盘是否已经显示 在群里看到有人问:ios如何判断键盘已经显示在界面上. 其实这个解决很简单: 写一个单例来管理键盘的状态. 这个单例在初始化方法init种监听2个事件,分别是 UIKe ...

  8. cisco的telnet终端显示debug调试信息

    telnet到cisco设备的终端模式却无法显示本地串口模式下得debug信息,需要使用一下命令: 打开终端显示: SW-01#terminal monitor 打开日志功能: SW-01(confi ...

  9. 矩阵键盘数 码管显示多位数 c语言,4×4矩阵键盘数码管显示按键值程序

    4×4矩阵键盘数码管显示按键值程序本文引用地址:http://www.eepw.com.cn/article/201607/294422.htm //电路说明如下. //单片机:使用51系列兼容的即可 ...

最新文章

  1. Windows页目录自映射方案
  2. Android中实现照片滑动时左右进出的动画的xml代码
  3. 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
  4. 20135213 20135231 信息安全系统设计基础课程第三次实验报告
  5. SpringBoot和Ajax通信
  6. python scrapy爬虫遇见301_python Scrapy框架 报301
  7. opencv 性能测试
  8. Windows Phone 8.1 多媒体(2):视频
  9. html5增加用户代码,HTML5 用户注册页面源代码
  10. 魔兽世界模型浏览器WowModelExplorer演示
  11. GitLab之Runner注册K8S
  12. 关于SMP IRQ affinity
  13. 站在巨人的肩膀上-听课感想
  14. 爬虫案例:自动登录抽屉新热榜
  15. 【VBox】解决复制VBox虚拟机后提示硬盘UUID 已经存在的问题
  16. 多模态知识问答:MMCoQA: Conversational Question Answering over Text, Tables, and Images
  17. Dell Precision M4800 VoodooPS2Controller 键盘/触控驱动修复过程
  18. android 服务开机启动慢,Android App启动慢原因
  19. Mac OSX 安装qemu
  20. 对抗鲁棒性使得神经网络又强又怂

热门文章

  1. MySQL workbench创建用户与授权
  2. Java语言基础1-关键字、标识符、常量和变量
  3. docker使用阿里云镜像仓库
  4. XML fragments parsed from previous mappers already contains value for xxxxx
  5. PAT 1012 数字分类 (20)
  6. 使用虚拟按钮(Ghost Buttons)的25个网站
  7. 多表关联更新,UPDATE FROM用法
  8. NoSQL数据存储引擎
  9. android studio 多个项目管理,Android Studio之同一应用创建多个Activity(一)
  10. plc有与计算机的通讯请求时,OMRON PLC网络Ethernet网_OMRON PLC与上位计算机之间的通信_OMRON PLC与上位计算机通信程序-维库电子通...