Bonjour à tous.
Je suis un peu débutant en programmation GTK, je pige pas grand chose et j'aurais besoin de votre aide.
J'ai crée avec glade une petite interface basique comportant un label et un bouton et j'aimerais que lorsque l'on clique sur le bouton, le label change...
C'est un exemple un peu bidon, de base, mais j'apprends... tant bien que mal.
J'ai lu quelques tuto ici et là, je me suis inspiré d'exemples, mais je coince un peu.
Problème, je n'arrive pas au résultat, je vous livre mon code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <gtk/gtk.h> static void clic_bouton (GtkLabel * plabel, gpointer p_lab) { const char * str; str = "EJECT"; //printf("solution %s \n", p_str); gtk_label_set_label(GTK_LABEL((GtkLabel*)p_lab), str); }J'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 int main( int argc, char **argv ) { GtkBuilder *builder; GtkWidget *window; GtkLabel *label; GError *error = NULL; /* Init GTK+ */ gtk_init( &argc, &argv ); /* Create new GtkBuilder object */ builder = gtk_builder_new(); /* Load UI from file. If error occurs, report it and quit application. * Replace "tut.glade" with your saved project. */ if( ! gtk_builder_add_from_file( builder, "Test_interface.xml", &error ) ) { g_warning( "%s", error->message ); g_free( error ); return( 1 ); } /* Get main window pointer from UI */ window = GTK_WIDGET( gtk_builder_get_object( builder, "window1" ) ); label = GTK_LABEL( gtk_builder_get_object( builder, "label1" ) ); /* Connect signals */ g_signal_connect( gtk_builder_get_object( builder, "bouton" ),"clicked", G_CALLBACK (clic_bouton), (GtkLabel*) label ); /* Destroy builder, since we don't need it anymore */ g_object_unref( G_OBJECT( builder ) ); /* Show window. All other widgets are automatically shown by GtkBuilder */ gtk_widget_show( window ); /* Start main loop */ gtk_main(); return( 0 ); }
Bon d'après ce que je comprends, j'ai un problème avec ma variable "label", mais où ça je sais pas. Je pense que les experts trouveront vite ce qui cloche dans mon code.Gtk-CRITICAL **: gtk_label_set_label: assertion 'GTK_IS_LABEL (label)' failed
Merci beaucoup pour votre aide.
Partager