其他物联网感知方面内容见:目录
简单计算器案例
#include <stdio.h>
#include <gtk/gtk.h>
#include "sungtk_interface.h"
void cb_button(GtkButton* button,gpointer data)
{
//追加按钮上的标签
GtkEntry * entry = (GtkEntry*)data;
//获取行编辑的内容
const gchar *str = gtk_entry_get_text(entry);
char buf[256]="";
strcpy(buf,str);
//获取按钮上标签的内容
const gchar * str_label = gtk_button_get_label(button);
//追加
strcat(buf,str_label);
//设置行编辑
gtk_entry_set_text(entry,buf);
}
void cb_button_res(GtkButton* button,gpointer data)
{
GtkEntry * entry = (GtkEntry*)data;
//获取行编辑的内容
const gchar *str = gtk_entry_get_text(entry);
char buf[256]="";
strcpy(buf,str);
//获取按钮上标签的内容
// 23+67
//5*6
//a&b
int a=0;
int b=0;
char ch=0;
sscanf(buf,"%d%c%d",&a,&ch,&b);
int res=0;
switch(ch)
{
case '+':
res = a+b;
break;
case '-':
res = a-b;
break;
case '*':
res = a*b;
break;
case '/':
res = a/b;
break;
case '%':
res = a%b;
break;
}
//将结果显示到行编辑上
char cmd[128]="";
sprintf(cmd,"%d",res);
gtk_entry_set_text(entry,cmd);
}
void cb_button_delete(GtkButton* button,gpointer data)
{
GtkEntry * entry = (GtkEntry*)data;
//获取行编辑的内容
const gchar *str = gtk_entry_get_text(entry);
char buf[256]="";
strcpy(buf,str);
int n = strlen(buf)-1;//abcdef
buf[n] ='\0';
gtk_entry_set_text(entry,buf);
}
void cb_button_clear(GtkButton* button,gpointer data)
{
GtkEntry * entry = (GtkEntry*)data;
gtk_entry_set_text(entry,"");
}
int main(int argc, char *argv[])
{
gtk_init(&argc,&argv);
//创建并且设置窗口
GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);//创建窗口
gtk_window_set_title((GtkWindow *)win,"vbox");//设置窗口的标题
gtk_widget_set_size_request(win,400,300);//设置窗口的大小
gtk_window_set_resizable((GtkWindow *)win,FALSE);//设置不可伸缩
sungtk_background_set_picture(win,"../Image/bk.png",400,300);//设置背景图
//创建表格
GtkWidget *table = gtk_table_new(4,6,TRUE);
GtkWidget * entry = gtk_entry_new();//创建行编辑
gtk_table_attach_defaults( (GtkTable*)table,entry,0,6,0,1);
// 创建三个带标签的按钮
GtkWidget *button=NULL;
for(int i =0;i<10;i++)
{
//数值i转换成字符串i
char buf[128]="";
sprintf(buf,"%d",i);
button = gtk_button_new_with_label(buf);
sungtk_widget_set_font_size(button,30,TRUE);
gtk_button_set_relief((GtkButton*)button,GTK_RELIEF_NONE);
if(i < 5)
{
gtk_table_attach_defaults( (GtkTable*)table,button,i,i+1,1,2);
}
else
{
gtk_table_attach_defaults( (GtkTable*)table,button,i-5,i+1-5,2,3);
}
g_signal_connect(button,"pressed",G_CALLBACK(cb_button),entry);
}
GtkWidget *button_add = gtk_button_new_with_label("+");
GtkWidget *button_sub = gtk_button_new_with_label("-");
GtkWidget *button_mul = gtk_button_new_with_label("*");
GtkWidget *button_div = gtk_button_new_with_label("/");
GtkWidget *button_mod = gtk_button_new_with_label("%");
GtkWidget *button_clear = gtk_button_new_with_label("C");
GtkWidget *button_res = gtk_button_new_with_label("=");
GtkWidget *button_delete = gtk_button_new_with_label("<-");
//设置按钮透明
gtk_button_set_relief((GtkButton*)button_add,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_mul,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_sub,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_div,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_mod,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_clear,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_res,GTK_RELIEF_NONE);
gtk_button_set_relief((GtkButton*)button_delete,GTK_RELIEF_NONE);
sungtk_widget_set_font_size(button_add,30,TRUE);
sungtk_widget_set_font_size(button_sub,30,TRUE);
sungtk_widget_set_font_size(button_mul,30,TRUE);
sungtk_widget_set_font_size(button_div,30,TRUE);
sungtk_widget_set_font_size(button_mod,30,TRUE);
sungtk_widget_set_font_size(button_clear,30,TRUE);
sungtk_widget_set_font_size(button_res,30,TRUE);
sungtk_widget_set_font_size(button_delete,30,TRUE);
g_signal_connect(button_add,"pressed",G_CALLBACK(cb_button),entry);
g_signal_connect(button_sub,"pressed",G_CALLBACK(cb_button),entry);
g_signal_connect(button_mul,"pressed",G_CALLBACK(cb_button),entry);
g_signal_connect(button_div,"pressed",G_CALLBACK(cb_button),entry);
g_signal_connect(button_mod,"pressed",G_CALLBACK(cb_button),entry);
g_signal_connect(button_clear,"pressed",G_CALLBACK(cb_button_clear),entry);
g_signal_connect(button_res,"pressed",G_CALLBACK(cb_button_res),entry);
g_signal_connect(button_delete,"pressed",G_CALLBACK(cb_button_delete),entry);
gtk_table_attach_defaults( (GtkTable*)table,button_add,0,1,3,4);
gtk_table_attach_defaults( (GtkTable*)table,button_sub,1,2,3,4);
gtk_table_attach_defaults( (GtkTable*)table,button_mul,2,3,3,4);
gtk_table_attach_defaults( (GtkTable*)table,button_div,3,4,3,4);
gtk_table_attach_defaults( (GtkTable*)table,button_mod,4,5,3,4);
gtk_table_attach_defaults( (GtkTable*)table,button_clear,5,6,2,3);
gtk_table_attach_defaults( (GtkTable*)table,button_res,5,6,3,4);
gtk_table_attach_defaults( (GtkTable*)table,button_delete,5,6,1,2);
//设置按钮背景透明
//gtk_button_set_relief((GtkButton*)button1,GTK_RELIEF_NONE);
//g_signal_connect(button2,"pressed",G_CALLBACK(cb_button2),entry);
//创建一个表格布局
//将按钮条件到表格
//gtk_table_attach_defaults( (GtkTable*)table,button1,0,1,0,1);
//将表格添加到win
gtk_container_add((GtkContainer*)win,table);
// 显示
gtk_widget_show_all(win);
gtk_main();
return 0;
}
- 效果预览
图片展示案例
#include <stdio.h>
#include <gtk/gtk.h>
#include "sungtk_interface.h"
char img[100][100] = {"../Image/3.jpg","../Image/4.jpg","../Image/1.jpg","../Image/2.jpg","../Image/5.jpg","../Image/6.jpg"};
const int all = 6;
int id = 0;
void cb_button_last(GtkButton *button,gpointer data)
{
GtkWidget *image = (GtkWidget*)data;
id = (id - 1 + all) % all;
sungtk_image_load_picture(image, img[id], 336, 518);//给创建好的image重新设计图片
}
void cb_button_next(GtkButton *button,gpointer data)
{
GtkWidget *image = (GtkWidget*)data;
id = (id + 1) % all;
sungtk_image_load_picture(image,img[id],336,518);
}
void cb_button_play(GtkButton *button,gpointer data)
{
GtkWidget *image = (GtkWidget*)data;
int i;
for (i = 1;i < 6; i++)
{
id = (id + 1) % all;
sungtk_image_load_picture(image,img[id],336,518);
sleep(1);
}
}
int main(int argc,char *argv[])
{
gtk_init(&argc,&argv);
//窗口设置
GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title((GtkWindow*)win,"图像显示");
gtk_widget_set_size_request(win,420,700);
//设置按钮
GtkWidget *last = gtk_button_new_with_label("Last");
GtkWidget *next = gtk_button_new_with_label("Next");
GtkWidget *play = gtk_button_new_with_label("Play");
//规定按钮大小
gtk_widget_set_size_request(last,98,100);
gtk_widget_set_size_request(next,98,100);
gtk_widget_set_size_request(play,98,100);
//规定按钮位置
GtkWidget * fixed = gtk_fixed_new();
gtk_container_add((GtkContainer*)win,fixed);
gtk_fixed_put((GtkFixed*)fixed,last,42,574);
gtk_fixed_put((GtkFixed*)fixed,play,168,574);
gtk_fixed_put((GtkFixed*)fixed,next,294,574);
//创建一个带图片的image控件
GtkWidget *displayer = sungtk_image_new_from_file("../Image/3.jpg",336,518);
gtk_fixed_put((GtkFixed*)fixed,displayer,42,42);
g_signal_connect(last,"pressed",G_CALLBACK(cb_button_last),displayer);
g_signal_connect(next,"pressed",G_CALLBACK(cb_button_next),displayer);
g_signal_connect(play,"pressed",G_CALLBACK(cb_button_play),displayer);
gtk_widget_show_all(win);
gtk_main();
return 0;
}
- 效果预览