µ±Ç°Î»ÖãºLinux½Ì³Ì - Linux - ÀûÓà EasyGTK ½øÐÐÇáËÉ GUI ±à³Ì

ÀûÓà EasyGTK ½øÐÐÇáËÉ GUI ±à³Ì

¾ßÓÐÍêÕû GUI ¹¤¾ßÏä¿ÉÀ©Õ¹¹¦ÄܵĿì½Ý·½Ê½µÄºÃ´¦

Patrick Lambert
IT ¹ËÎʺÍ×ÔÓÉרÀ¸×÷¼Ò

ÄÚÈÝ£º


¸ü¼òµ¥ GUI µÄÇáËÉ¿ªÊ¼
¿ªÊ¼Ê¹Óà EasyGTK
·ÖÎöÑù±¾´úÂë
À©Õ¹³É¹û
²Î¿¼×ÊÁÏ
¹ØÓÚ×÷Õß




Gimp Toolkit (GTK+) ÊÇÒ»¸öÃâ·Ñ¹¤¾ßÏ䣬¿ÉÒÔÓÃÓÚ´´½¨ÍêÃÀµÄÓû§½çÃæ¡£EasyGTK ÊÇÒ»¸ö½«µ÷ÓÃת»»³É GTK+ µÄ·â×°¿â£¬´Ó¶ø´ó´ó½ÚÊ¡ÁËÕÆÎÕ GTK+ ÐèÒª¸¶³öµÄ¾«Á¦ºÍʱ¼ä¡£±¾ÎÄ×Ðϸ·ÖÎöÁËһС¶Î EasyGTK ´úÂ룬ÓÃÒÔ˵Ã÷ÈçºÎ´´½¨¼òµ¥µÄÓ¦ÓóÌÐò£¬²¢ÌṩÁ˶ÔʹÓô˹¤¾ßÏäµÄһЩ½¨Òé¡£

¡°Í¼ÐÎÓû§½çÃæ (GUI)¡±¹¤¾ßÏäÔÚ Linux ÖÐÒѾ­´æÔÚÁËÐí¶àÄê¡£´Ó Xlib¡¢XT ºÍ Motif ¿ªÊ¼£¬ËüÃǾÍÌṩÁËÒ»¸ö API£¬Õâ¸ö API ¿ÉÒÔʹÔÚ Linux ÉÏ´´½¨Æ¯ÁÁµÄͼÐγÌÐò±äµÃ¸üÈÝÒס£ËüÃǶ¼¸½´øÁËÒ»¸ö˵Ã÷ÈçºÎʹÓÃÕâЩ¿âÀ´´´½¨³ÌÐòµÄÎĵµ¡£×î½ü£¬ÔÚ Linux GUI ÊÀ½çÖУ¬Ò»¸öеĿâ³ÉΪÁËÖ÷Á÷£ºGTK+¡£Gimp Toolkit (GTK+) ¿ÉÒÔ´´½¨·Ç³£¾«ÖµijÌÐò£¬¶øÇÒËüÊÇÃâ·ÑµÄ£¬Õâ¾ÍʹËüÔÚ Linux ¿ª·¢ÈËÔ±Ö®Öзdz£Á÷ÐС£È»¶ø£¬ËüÓÐÒ»¸ö³£¼ûÎÊÌ⣬¾ÍÊÇѧϰÈçºÎʹÓøÿâÀ´´´½¨³ÌÐòÐèÒª»¨·ÑºÜ³¤Ê±¼ä¡£ÈÃÎÒÃǽøÈë EasyGTK¡£

¸ü¼òµ¥ GUI µÄÇáËÉ¿ªÊ¼
´Ó¼¼Êõ½Ç¶ÈÀ´¿´£¬Õâ¸ö¿âÊÇÒ»¸ö·â×°¿â¡£ÕâÒâζ×Å¿ª·¢ÈËԱʹÓà EasyGTK C API À´´´½¨Èí¼þ£¬¶øËü½«µ÷ÓÃת»»³É GTK+ ¿â¡£Ò»¸öÆÕͨµÄ EasyGTK ÃüÁî¿ÉÒÔʵÏÖ 5 µ½ 10 ¸ö GTK+ º¯ÊýËùʵÏֵŦÄÜ¡£Õâ¾ÍÒâζ×ÅʹÓà EasyGTK µ÷Óô´½¨³ÌÐò²»½ö¸üÈÝÒ×£¬¶øÇÒ¸ü¿ì¡£

¿ªÊ¼Ê¹Óà EasyGTK
ÈÃÎÒÃÇ¿´Ò»Ï»ù±¾ÃüÁ×öºÃ¿ªÊ¼Ê¹ÓÃÕâ¸ö¿âµÄ×¼±¸¡£ÈçͬÆäËü Linux ³ÌÐòÒ»Ñù£¬EasyGTK Ò²ÐèÒª¾­¹ý±àÒëºÍ°²×°¡£ËüÓ¦¸ÃÔÚ±ê×¼ Linux ·¢ÐаæÉÏÔËÐС£°²×°Ö®ºó£¬¾Í¿ÉÒÔʹÓþ²Ì¬¿âÀ´±àÒëÄú×Ô¼ºµÄ³ÌÐò£¬ÈçͬÆäËü¿âÒ»Ñù¡£¸½´øµÄÎĵµÖÐÓÐÈçºÎʹÓà EasyGTK ±àÒë³ÌÐòµÄÍêÕûÃèÊö£¬ÒÔ¼°Ò»¸öÃüÁîÁÐ±í¡£ÎªÁ˼ÌÐøÌÖÂÛÕâ¸ö¿â£¬ÈÃÎÒÃÇ¿´Ò»Ï¼òµ¥³ÌÐòÔ´´úÂ룺

»ù±¾´úÂëÑù±¾ #include "easygtk.h"
GtkWidget *win, *box, *text, *button;

void main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
win e_window_create("Hello World", 400, 200, 100, 100, exit);
box e_box_create(win, E_VERTICAL, 2);
text e_text_create(box, FALSE, "Hello World!", E_NO_FUNC);
button e_button_create(box, "Close", exit);
gtk_main();
}

·ÖÎöÑù±¾´úÂë
Õâ¸ö EasyGTK С³ÌÐòÈç¹ûÓà GTK+ ½øÐбàÂ룬¿ÉÄÜ»áÓдóÔ¼ 30 ÐС£ÏÖÔÚ£¬ÈÃÎÒÃÇÖðÐÐÑо¿Õâ¸ö´úÂëµÄ¹¦ÄÜ¡£µÚÒ»ÐиæËß±àÒëÆ÷Òª°üÀ¨Õâ¸ö¿â¸½´øµÄÎļþ easygtk.h£¬¸ÃÎļþ°üÀ¨ÁËËùÓÐ EasyGTK ÃüÁîµÄ¶¨Òå¡£

ÏÂÒ»ÐÐÊdzÌÐòÖÐʹÓõĴ°¿ÚС²¿¼þµÄÉùÃ÷¡£´°¿ÚС²¿¼þÊDZíʾÖîÈç´°¿Ú¡¢°´Å¥¡¢Îı¾±êÇ©»ò²¼¾Ö¿òÖ®ÀàµÄͼÐÎ×é¼þµÄ±äÁ¿¡£ÔÚ main º¯ÊýÖУ¬ÎÒÃDZØÐëÏÈÆô¶¯ GTK+ ÒýÇ棬ȻºóÖ»Òª´´½¨´°¿ÚС²¿¼þ¡£ËùÓÐ EasyGTK ÃüÁÒÔ "e" ¿ªÍ·¡£µÚÒ»¸ö EasyGTK ÃüÁî´´½¨ÁËÒ»¸ö´°¿Ú¡£¹ØÓÚËùÓÐ EasyGTK º¯Êý¶¼Ê¹ÓÃʲô²ÎÊý£¬Çë²Î¿¼¿âÎĵµ¡£ÀýÈ磬e_window_create() º¯Êý½«ÔÚλÖà 100x100 ´¦´´½¨Ò»¸ö 400 ÏñËسËÒÔ 200 ÏñËصĴ°¿Ú£¬Æä±êÌâÊÇ "Hello World"£¬Èç¹ûÓû§¹Ø±Õ´Ë´°¿Ú£¬Ôò»áµ÷Óú¯Êý exit()¡£

ʹÓÃÕâ¸ö¿âʱӦ¸ÃÒªÖªµÀÈçºÎÔÚ´°¿ÚÖзÅÖô°¿ÚС²¿¼þ»ò×é¼þ¡£Ò»µ©´´½¨ÁË´°¿Ú£¬¾Í±ØÐëÔÚÆäÖзÅÖÿò¡£ÓÐ 2 ÖÖ¿ò£º´¹Ö±¿òºÍˮƽ¿ò¡£Èç¹ûÏëÒª½«Îı¾±êÇ©ºÍ°´Å¥ÉÏÏ·ÅÖã¬ÄÇô¿ÉÒÔʹÓô¹Ö±¿ò£¬½«±êÇ©ºÍ°´Å¥Ìí¼Óµ½¸Ã¿ò£¬ËüÃǽ«°´ÄúÆÚÍûµÄ·½Ê½ÏÔʾ¡£¼ÙÉèÄúÏ£Íû±êǩλÓÚ´°¿Ú¶¥²¿£¬2 ¸ö°´Å¥²¢ÅÅ·ÅÖÃÔÚ´°¿Úµ×²¿¡£ÄÇô¿ÉÒÔÏÈʹÓô¹Ö±¿ò£¬È»ºóʹÓÃˮƽ¿ò¡£Ìí¼ÓÁËËùÐèµÄ¿òÖ®ºó£¬¾Í¿ÉÒÔÏòËüÌí¼ÓÈκδ°¿ÚС²¿¼þ£¬ÉõÖÁÌí¼ÓÆäËü¿ò¡£

½Ó×ŵÄÁ½¸öÃüÁî´´½¨ÁËÒ»¸öÎı¾ÇøºÍÓÃÓڹرմ˴°¿ÚµÄ°´Å¥¡£¾­¹ý±àÒëÖ®ºó£¬Õâ¸öÓ¦ÓóÌÐò²¢Ã»ÓÐÌ«¶à¹¦ÄÜ£¬Ëü½öÊÇÒ»¸öʾÀý¡£ÔÚÕâ¸ö main C º¯ÊýµÄ½áβÊÇÆô¶¯ main GTK+ Ñ­»·µÄÃüÁî¡£Õ⽫°ÑÎÒ´øÈëʼþºÍÑ­»·¡£ÔÚ GTK+ »ò EasyGTK Ó¦ÓóÌÐòÖУ¬Ö»ÄÜÔÚ gtk_main() Æô¶¯µÄ main Ñ­»·Öмì²âµ½Óû§²Ù×÷¡£Ìí¼ÓÁË×é³ÉÓ¦ÓóÌÐòµÄËùÓд°¿ÚС²¿¼þºó£¬¾ÍÐèҪʹÓøú¯ÊýÀ´Æô¶¯Ñ­»·¡£È»ºó³ÌÐò½øÐÐÑ­»·²¢µÈ´ýÓû§²Ù×÷¡£Èç¹ûÓû§Ö´ÐÐÁËijЩ²Ù×÷£¨ÀýÈ磬µ¥»÷°´Å¥£©£¬ÄÇôѭ»·½«Í£Ö¹£¬¿ØÖƽ«½»¸øÖ¸¶¨µÄº¯Êý£¬ÔÚ±¾ÀýÖÐÊÇÓÃÓÚÍ˳ö³ÌÐòµÄ exit()¡£

À©Õ¹³É¹û
Õâ¸öʾÀýÑÝʾÁËÈçºÎ´´½¨·Ç³£¼òµ¥µÄÓ¦ÓóÌÐò£¬µ«Äú¿ÉÒÔÌí¼Ó¸ü¸´ÔÓµÄ×é¼þ¡£EasyGTK Óг¬¹ý 50 ¸öº¯Êý¿É¹©Ê¹Óá£ÎÒ½¨ÒéÄú³¢ÊÔһϿ⸽´øµÄʾÀýÔ´Îļþ¡£»¹¿ÉÒÔÔÚͬһ¸öÓ¦ÓóÌÐòÖлìºÏ EasyGTK ºÍ´¿ GTK+ ÃüÁî¡£

Ä¿Ç°£¬EasyGTK Ö§³Ö GTK+ °æ±¾ 1.2£¬ÕâÊÇ´ó¶àÊý Linux ·¢Ðа渽´øµÄ°æ±¾¡£Ëü»¹°üº¬ÁËÐèҪʹÓà Imlib¡¢ImageMagick ºÍ GNOME µÄº¯Êý¡£È»¶ø£¬Äú¿ÉÒÔÔÚ²»Ö§³ÖÕâЩ¿âµÄÇé¿öϱàÒë´Ë¿â£¬¶øÇÒ²»ÐèÒª°²×°ËüÃÇÒÔ±ãʹÓà EasyGTK¡£¾ÝÎÒËùÖª£¬Õâ¸ö¿â»¹¿ÉÒÔÔÚÆäËü UNIX ϵͳ£¨Èç Sun Solaris£©ÉϹ¤×÷¡£

ÓÐ¹Ø EasyGTK£¬×îºóÐèҪעÒâµÄÊÇÆäÔ´´úÂëÔÚ GPL Ðí¿ÉÖ¤µÄ¹æ¶¨Ï¹«¿ª£¬Ò²¾ÍÊÇ˵¿ÉÒÔ¶¨Öƺ¯ÊýÒÔʹËü·ûºÏÄúµÄÐèÒª¡£ÀýÈ磬Èç¹ûʹÓÃÕâ¸ö¿âÀ´´´½¨Ðí¶à´°¿Ú£¬µ«ÓÖÏ£Íû´°¿Ú²»ÏÔʾ¹Ø±Õ°´Å¥£¬ÄÇô¿ÉÒÔÐ޸Ĵ˿âµÄÔ´´úÂë±¾ÉíÀ´ÊµÏÖÕâ¸öÄ¿µÄ¡£Õâ¸ö¿â¾ÍÊÇÇáËɱàÂëºÍʹӦÓóÌÐò´´½¨¸ü¿ìËÙµÄÒ»ÖÖ·½Ê½¡£

²Î¿¼×ÊÁÏ

ÇëÏÂÔØ EasyGTK ¿â¡£
ÇëÏÂÔØ GTK+ ¿â¡£
ÇëÔĶÁ GNOME ³ÉÔ± George Lebl ÔÚ developerWorks ÉÏ·¢±íµÄ½éÉÜʹÓà GNOME ¿â±à³ÌµÄϵÁÐÎÄÕ£ºÈëÃÅ¡¢¹¹½¨Ñù±¾³ÌÐòºÍʹÓà libxml¡£George µÄÍøÕ¾ÉÏÓйØÓÚ Linux ºÍ GNOME µÄÏêϸÐÅÏ¢¡£
Çë·ÃÎÊרÓÃÓÚ GNOME Ó¦ÓóÌÐò¿ª·¢ÕßµÄÕ¾µã¡£Ëü°üº¬ÁË API ²Î¿¼´óÈ«¡¢½Ì³Ì¡¢°×ƤÊéºÍÆäËüÓаïÖúµÄÐÅÏ¢¡£
¿ÉÓÃµÄ GNOME Ó¦Óñà³Ì½Ì³Ì¡£
Çë³¢ÊÔ gtk.org µÄ GTK+ ½Ì³Ì¡£
·ÃÎÊ RedHat µÄ RHAD ʵÑéÊÒ£¬ÄÇÀïÓÐÐí¶àÕýÔÚ½øÐÐµÄ GNOME/GTK+ ¿ª·¢
²é¿´ GIMP£¬ËüÊÇ GTK+ µÄ·¢Ô´µØ

¹ØÓÚ×÷Õß
Patrick Lambert ÊÇһλ IT ¹ËÎʺÍ×ÔÓÉרÀ¸×÷¼Ò¡£Ëû׫дÁ˹ØÓÚ¼ÆËãÎÊÌâºÍÒòÌØÍøµÄÎÄÕ¡£ËûÊÇ΢ÈíÈÏ֤ר¼Ò (MCP) ºÍÈÏÖ¤ A+ ¼¼Êõר¼Ò¡£¿Éͨ¹ý [email protected] ÓëËûÁªÏµ¡£