求在linux系统上用GTK编写图形界面程序,要求用到窗口按钮标签容器和布局

求在linux系统上用GTK编写图形界面程序,要求用到窗口按钮标签容器和布局,第1张

void enter_callback( GtkWidget widget,

GtkWidget entry )

{

const gchar entry_text;

entry_text = gtk_entry_get_text (GTK_ENTRY (entry));

printf("Entry contents: %s\n", entry_text);

}

void entry_toggle_editable( GtkWidget checkbutton,

GtkWidget entry )

{

gtk_editable_set_editable (GTK_EDITABLE (entry),

GTK_TOGGLE_BUTTON (checkbutton)->active);

}

void entry_toggle_visibility( GtkWidget checkbutton,

GtkWidget entry )

{

gtk_entry_set_visibility (GTK_ENTRY (entry),

GTK_TOGGLE_BUTTON (checkbutton)->active);

}

/ 我们常见的回调函数 /

void callback( GtkWidget widget,

gpointer data )

{

g_print ("Hello again - %s was pressed\n", (char ) data);

}

int main( int argc, char argv[])

{

GtkWidget window;

GtkWidget ok;

GtkWidget close;

GtkWidget text_view;

GtkTextBuffer buffer;

GtkWidget vbox;

GtkWidget hbox;

GtkWidget halign;

GtkWidget valign;

gtk_init(&argc, &argv);

//=============Build a window===========//

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

gtk_window_set_default_size(GTK_WINDOW(window), 350, 280);

gtk_window_set_title(GTK_WINDOW(window), "Labyrinth");

gtk_container_set_border_width(GTK_CONTAINER(window), 10);

g_signal_connect_swapped(G_OBJECT(window), "destroy",

G_CALLBACK(gtk_main_quit), G_OBJECT(window));

//=============Adjust layout============//

vbox = gtk_vbox_new(FALSE, 5);

valign = gtk_alignment_new(0, 1, 0, 0);

gtk_container_add(GTK_CONTAINER(vbox), valign);

gtk_container_add(GTK_CONTAINER(window), vbox);

hbox = gtk_hbox_new(TRUE, 3);

//=============Build tow button========//

ok = gtk_button_new_with_label("OK");

gtk_widget_set_size_request(ok, 70, 30);

gtk_container_add(GTK_CONTAINER(hbox), ok);

close = gtk_button_new_with_label("Close");

gtk_container_add(GTK_CONTAINER(hbox), close);

halign = gtk_alignment_new(1, 0, 0, 0);

close = gtk_button_new_from_stock (GTK_STOCK_CLOSE);

gtk_container_add(GTK_CONTAINER(halign), hbox);

gtk_box_pack_start(GTK_BOX(vbox), halign, FALSE, FALSE, 0);

g_signal_connect_swapped (G_OBJECT (close), "clicked",

G_CALLBACK (gtk_widget_destroy),

window);

GTK_WIDGET_SET_FLAGS (close, GTK_CAN_DEFAULT);

gtk_widget_grab_default (close);

gtk_widget_show (close);

//=============Build a TestView==========//

text_view=gtk_text_view_new();/创建文本框构件/

gtk_widget_set_size_request(text_view,200,200);

gtk_container_add(GTK_CONTAINER(window),vbox);

gtk_box_pack_start(GTK_BOX(vbox),text_view,FALSE,FALSE,0);

buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));

gtk_widget_show(text_view);

//=============================

GtkWidget entry;

gint tmp_pos;

entry = gtk_entry_new ();

gtk_entry_set_max_length (GTK_ENTRY (entry), 50);

g_signal_connect (G_OBJECT (entry), "OK",

G_CALLBACK (enter_callback), entry);

gtk_entry_set_text (GTK_ENTRY (entry), "hello");

tmp_pos = GTK_ENTRY (entry)->text_length;

gtk_editable_insert_text (GTK_EDITABLE (entry), " world", -1, &tmp_pos);

gtk_editable_select_region (GTK_EDITABLE (entry),

0, GTK_ENTRY (entry)->text_length);

// tmp_pos = GTK_ENTRY (entry)->text_length;

// gtk_editable_insert_text (GTK_EDITABLE (entry), " hello ", -1, &tmp_pos);

// gtk_editable_select_region (GTK_EDITABLE (entry),

// 0, GTK_ENTRY (entry)->text_length);

gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);

gtk_widget_show (entry);

gtk_widget_show_all(window);

gtk_main();

return 0;

}

SDL 是硬件功能接口的库。QT GTK 是窗口管理的库。完全是两个针对方向。

GTK QT 里面可没有针对声卡开发的东西。

就像 Windows 下面编程。你用了 DirectX, 干什么还要使用 MFC 的窗口、消息函数?

OpenGL 是 3D 接口库。和 SDL 、QT、GTK 的定位又不一样……

SDL 有点覆盖 OpenGL 功能,但隔着一层,功能有影响的。

就好像喝水了,为什么还要吃饭……

PHP能做任何事。PHP主要是用于服务端的脚本程序,因此您可以用PHP来完成任何其它的CGI程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收Cookies。但PHP的功能远不局限于此。

PHP脚本主要用于以下三个领域。

服务端脚本。这是PHP最传统,也是最主要的目标领域。开展这项工作您需要具备以下三点:PHP解析器(CGI或者服务器模块)、WEB服务器和WEB浏览器。您需要在运行WEB服务器时,安装并配置PHP,然后,可以用WEB浏览器来访问PHP程序的输出,即浏览服务端的PHP页面。请查阅“安装”一章以获取更多信息。

命令行脚本。您可以编写一段PHP脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,您仅仅只需要PHP解析器来执行。这种用法对于依赖cron(Unix或者Linux环境)或者TaskScheler(Windows环境)的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。请参阅“PHP的命令行模式”以获取更多信息。

编写客户端的GUI应用程序。对于基于窗口式的应用程序来说,PHP或许不是一种最好的语言,但是如果您非常精通PHP,并且希望在您的客户端应用程序中使用PHP的一些高级特性,您可以利用PHP-GTK来编写这些程序。用这种方法,您还可以编写跨平台的应用程序。PHP-GTK是PHP的一个扩展,在通常发布的PHP包中并不包含它。如果您对PHP-GTK感兴趣,请访问其网站以获取更多信息。

1每一种程序都有其发展的历程,没有任何一种程序是万能的,比如说我们都知道的C语言,开发C的初衷就是为了让程序员能脱离那种原始的汇编的环境,可以在高级语言环境中对内存地址进行控制,所以C语言在底层 *** 作上来讲要优越于其他高级语言;比如Pasical语言的初衷就是为了程序设计中的教学使用,所以Pasical语言的语法结构很严谨;比如Fortran语言,开发的初衷就是为了工程计算,所以他的数学逻辑工程逻辑功能模块就相当强大,等等

2现在的语言已经发展到面向对象的高级语言,像我们现在所熟知的Java、Net、Delphi等语言,他们开发应用软件来说基本没有太大的区别,因为他们的库都已经很丰富,我们开发起来也相对较简单一些,他们的差距也就紧紧在于市场占有率和所在公司开发选择问题上了。还有另外一个就是一些数据库编程的语言比如SQL、PB等语言,他们的数据库功能相当强大,由于微软产品的市场占有,所以大家比较倾向于SQL语言,因为他的应用面要广一些,但是不乏有些朋友会基于一些其他的想法选择其他类型的数据库编程语言。解释类语言,作为B/S开发模式的语言,也是根据其市场占有规模来分,一般来讲市场占有率越高的语言程序,那么它的库要丰富一些,我们 *** 作起来要相对容易些。所以说,现在流行的应用软件开发的语言来讲,我们一般考虑的是市场占有率高的,就会有更多的工作机会来等待我们;但是一些市场占有率稍低的开发语言(有自己特色的),工作机会自然少一些,但是报酬相对要高一些,物以稀为贵嘛!

3各种语言的选择

如果编写对性能要求苛刻,或和 *** 作系统结合紧密的程序,必然选择C。

如果编写到处可用的程序,选Java。

如果编写大程序,可能的话尽量用脚本语言如Python、Ruby,不行了再用Java和C。因为脚本语言带来了生产力。

编写文本的处理程序用Perl或Ruby。

编写知识的处理程序用prolog。

编写最灵活,最模糊的程序用Lisp。

编写office程序用vba。

编写服务器端程序,PHP、(采用自己熟悉的语言来写,例如Perl、Python、Ruby)CGI、ASP、(熟悉Java就用)JSP都是选择。

编写数据库程序用vb或delphi。

如果要追求性能和程序的能力,要完全发挥 *** 作系统的能力,使用C/C语言是合适的。在Windows环境下用VC,在Unix-like环境下用g。

如果不是追求和 *** 作系统完美结合,而只是性能,又要追求跨平台性,那么仍然选择C,但可以选择跨平台的库,如qt、gtk、fox、wxWindows。如果要编写游戏也有跨平台选择:SDL。

如果不满意C领域标准的不统一,不满意C的容易出错,不满意C的面向对象特征不彻底。如果不在乎跨平台,Windows平台可以选择C#,maC平台可以选择CoCo。如果需要跨平台,可以选择Java。

如果需要跨平台,又要广泛的支持的话,选择Java。

在Unix-like下,最方便的工具语言是Perl,它有强大的社区和代码库的支持。

如果只作为简单应用的工具语言,Python和Ruby是更好的选择,他们的跨平台移植性好,应用也比较广泛。其中Python更适合入门和交流,长期使用也不错。Ruby是对Python不满意的另一个选择,它提供了很多额外的功能。

如果要选择一个程序的嵌入语言,原来有Lisp、Basic和Java,现在还可以选择Python和Ruby。

如果在要求动态解释执行语言,而又不想学其他语言的话,C程序员的选择是pike,Java程序员的选择是beanshell。

在Java平台,又想用脚本语言的话,可以用Python。

最正统的基于文档的语言或叫动态页面语言是JavaScript。

最专门的服务器端语言是PHP,当然也有很多其他选择。

XML语言以XUL为最着名,dtml也算一个,你自己也可以用XML作为自己特殊用途的语言。比如jedit就用XML作为一种模式定制语言。XML语言是一种比较先进的趋势,比现有的语言在特殊领域更高效。

要找容易实现的语言,Lisp和Tcl是选择。

Lisp的数据和程序融为一体的能力和自由是其他语言都没有的。现在出现了一个Lisp的现代化的变种:REBOL。

如果有基于事实的编程的需要的话,prolog和Clips是必然。

4其实说到最后,也许大家都已经迷糊了。不过只需要一个简单的道理:选择什么方向(数据库、应用软件、底层开发等等),那要看我们对什么感兴趣,对什么有一种亲切感;选择好了方向,在选择需要那个具体的语言,那就要看市场占有,公司发展前景,我们需要得到的利润回报等因素(不过,作为同种类的语言,一个真正的程序员是可以很好的跨越这种平台的,也就是说你最好不要只学习一种语言)!

5如果你为了挣钱,就学JavaC#VB之类的快速开发工具;

如果你是为了挣钱还想搞搞技术,就学C之类的语言;

如果你想搞系统开发,你就要从硬件,汇编,一点一点学起了

以上就是关于求在linux系统上用GTK编写图形界面程序,要求用到窗口按钮标签容器和布局全部的内容,包括:求在linux系统上用GTK编写图形界面程序,要求用到窗口按钮标签容器和布局、请问LINUX下,为什么不用SDL开发桌面环境,而用了QT,GTK+X11的方法、PHP都可以开发出来什么啊_php应用开发是干嘛的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9822013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存