Gtk实现GUI键盘并终端显示
整体思路:建立一个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键盘并终端显示相关推荐
- wpf计算字符大小占像素_LCD作为终端显示字符串的过程
LCD作为终端显示字符串的过程 1.本文目的 2.资源评估 3.显示原理 4.嵌入式上汉字处理 5.结果验证与展示 6.总结 1.本文目的 做嵌入式图形开发,我们往往都会利用到各种GUI进行交互设计, ...
- printf利用转译字符在终端显示进度条(时钟)-zhuan
printf("\33[s"); 后跟下句才能固定显示,不知道为什么 printf("\33[0;0H\33[0m"); void processbar() { ...
- dev layoutview 怎么显示大小_Liunx驱动学习:基于imx6ul 驱动oledssd1306 实现终端显示...
说明: 在学习linux驱动的过程中,绕不开的就是LCD驱动,网上大部分教程都是教大家如果使用分辨率比较高的LCD作为Linux开发板的显示终端,但并没有讲过如果驱动spi或者iic这种低分辨率低帧率 ...
- Mac终端显示 bogon的问题
Mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,这个单词是虚拟.虚伪的意思.终端会先向DNS服务器 ...
- ubuntu终端显示乱码的解决
ubuntu终端显示乱码的解决 背景 在ubuntu终端,用diff命令比较两个源文件时,发现输出乱码,如下图所示: 原因 Ubuntu默认编码是UTF-8,可以用locale命令查看,在我电脑上查看 ...
- switch 根据键盘录入成绩 显示分数及判断等级(第三次)
package Day; import java.util.Scanner; //根据键盘录入成绩 显示分数及判断等级 public class Test_09 { // 需求分析:根据成绩的范围80 ...
- ios如何判断键盘是否已经显示
ios如何判断键盘是否已经显示 在群里看到有人问:ios如何判断键盘已经显示在界面上. 其实这个解决很简单: 写一个单例来管理键盘的状态. 这个单例在初始化方法init种监听2个事件,分别是 UIKe ...
- cisco的telnet终端显示debug调试信息
telnet到cisco设备的终端模式却无法显示本地串口模式下得debug信息,需要使用一下命令: 打开终端显示: SW-01#terminal monitor 打开日志功能: SW-01(confi ...
- 矩阵键盘数 码管显示多位数 c语言,4×4矩阵键盘数码管显示按键值程序
4×4矩阵键盘数码管显示按键值程序本文引用地址:http://www.eepw.com.cn/article/201607/294422.htm //电路说明如下. //单片机:使用51系列兼容的即可 ...
最新文章
- Windows页目录自映射方案
- Android中实现照片滑动时左右进出的动画的xml代码
- 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
- 20135213 20135231 信息安全系统设计基础课程第三次实验报告
- SpringBoot和Ajax通信
- python scrapy爬虫遇见301_python Scrapy框架 报301
- opencv 性能测试
- Windows Phone 8.1 多媒体(2):视频
- html5增加用户代码,HTML5 用户注册页面源代码
- 魔兽世界模型浏览器WowModelExplorer演示
- GitLab之Runner注册K8S
- 关于SMP IRQ affinity
- 站在巨人的肩膀上-听课感想
- 爬虫案例:自动登录抽屉新热榜
- 【VBox】解决复制VBox虚拟机后提示硬盘UUID 已经存在的问题
- 多模态知识问答:MMCoQA: Conversational Question Answering over Text, Tables, and Images
- Dell Precision M4800 VoodooPS2Controller 键盘/触控驱动修复过程
- android 服务开机启动慢,Android App启动慢原因
- Mac OSX 安装qemu
- 对抗鲁棒性使得神经网络又强又怂
热门文章
- MySQL workbench创建用户与授权
- Java语言基础1-关键字、标识符、常量和变量
- docker使用阿里云镜像仓库
- XML fragments parsed from previous mappers already contains value for xxxxx
- PAT 1012 数字分类 (20)
- 使用虚拟按钮(Ghost Buttons)的25个网站
- 多表关联更新,UPDATE FROM用法
- NoSQL数据存储引擎
- android studio 多个项目管理,Android Studio之同一应用创建多个Activity(一)
- plc有与计算机的通讯请求时,OMRON PLC网络Ethernet网_OMRON PLC与上位计算机之间的通信_OMRON PLC与上位计算机通信程序-维库电子通...