多线程的程序实例【永利集团304com】,Ubuntu下PyGtk的小程序开发之gtkhello

 
Ubuntu下有意思的优秀的小程序实在是太多了,真想知道那贰个天才般的程序猿是如何产生的,所以想深造linux下图形分界面程序的开销。
 
学园网在做客国外网址时是很极其的,幸亏同学有用网通上网的,先去找了有个别科目和质感试着编了一个hello
world小程序。正如预期的那么,出错是难免的!通过dir(gtk)查找函数再加上本人的一些困惑,竟把这些例子改好了,最终知晓原本是那个例子是老版本gtk的,今后2.0本子的函数名称有数不完都变了。

#include <gtk/gtk.h>

gtkhello.py

gint test()

from gtk import *                                           #
importing all the widgets from gtk

{

window = Window(WINDOW_TOPLEVEL)        # create a top level
window          
window.connect(“destroy”, main_quit)      # quit the event loop on
destruction 
window.set_border_width(10)                     # set padding round
child widget     

    while(1)

button = Button(“Hello World”)                  # A button with the
“Hello World” label
window.add(button)                                       # add button
to window               

       {

window.show_all()                                       # Show the
window with his widgets
main()                                                             #
enter the main event loop

              gdk_threads_enter();

永利集团304com 1

              g_printf(“hellon”);

永利集团304com 2

              gdk_threads_leave();

       };

    return TRUE;

}

gint timeout_callback( gpointer data )

{

       g_thread_create(test, NULL, FALSE, NULL);

       return FALSE;

}

/*那是一个回调函数。data参数在本示例中被忽略。

*背后有越多的回调函数示例。*/

void hello( GtkWidget *widget,

            gpointer   data )

{

    g_print (“Hello Worldn”);

}

gint delete_event( GtkWidget *widget,

                   GdkEvent *event,

                 gpointer   data )

{

    /*如果您的”delete_event”时限信号管理函数重返FALSE,GTK会发出”destroy”信号。

     *回来TRUE,你不期望关闭窗口。

     *当您想弹出“你规定要退出吗?”对话框时它很有用。*/

    g_print (“delete event occurredn”);

    /*改TRUE为FALSE程序会关闭。*/

    return TRUE;

}

/*另贰个回调函数*/

void destroy( GtkWidget *widget,

              gpointer   data )

{

    gtk_main_quit ();

}

int main( int   argc,

          char *argv[] )

{

    /* GtkWidget是构件的存放类型*/

    GtkWidget *window;

    GtkWidget *button;

       if(!g_thread_supported()) g_thread_init(NULL);

       gdk_threads_init();

       /*其一函数在具有的GTK程序都要调
用。参数由命令行中分析出来还要送到该程序中*/

    gtk_init (&argc, &argv);

   

    /*创造四个新窗口*/

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

   

    /*当窗口收到”delete_event”复信号(那几个信号由窗口管理器发出,平时是“关闭”

     *选料或是题目栏上的关闭开关发出的),大家让它调用在前头定义的delete_event()函数。

     *传给回调函数的data参数值是NULL,它会被回调函数忽略。*/

    g_signal_connect (G_OBJECT (window), “delete_event”,

                    G_CALLBACK (delete_event), NULL);

   

    /*在此处大家连年”destroy”事 件到三个时限信号管理函数。

     *对这些窗口调用gtk_widget_destroy()函数或在”delete_event”回调函数中回到FALSE值

     *都会接触这几个事件。*/

    g_signal_connect (G_OBJECT (window), “destroy”,

                    G_CALLBACK (destroy), NULL);

   

    /*创立三个标签为”Hello World”的新开关。*/

    button = gtk_button_new_with_label (“Hello World”);

   

    /*当按键收到”clicked”信 号时会调用hello()函数,并将NULL传给

     *它看做参数。hello()函数 在眼下定义了。*/

    g_永利集团304com,signal_connect (G_OBJECT (button), “clicked”,

                    G_CALLBACK (hello), NULL);

   

    /*当点击开关时,会通过调用gtk_widget_destroy(window)来关闭窗口。

     * “destroy”信号会从那边或从窗口处理器发出。*/

    g_signal_connect_swapped (G_OBJECT (button), “clicked”,

                           G_CALLBACK (gtk_widget_destroy),

                              window);

   

    /*把开关归入窗口(四个gtk容器)中。*/

    gtk_container_add (GTK_CONTAINER (window), button);

   

    /*最终一步是展现新创立的开关和窗口*/

    gtk_widget_show (button);

    gtk_widget_show (window);

    gtk_timeout_add(1, timeout_callback, NULL);

    /*持有的GTK程序必需有一 个gtk_main()函数。程序运行停在此处

     *等候事件(如键盘事件或鼠标 事件)的发出。*/

      

    gdk_threads_enter();

    gtk_main ();

    gdk_threads_leave();    

    return 0;

}

 

 

#include <gtk/gtk.h>

static GtkWidget *fixed;

static GtkWidget *button1;

static GtkWidget *button2;

发表评论

电子邮件地址不会被公开。 必填项已用*标注