Bonjour,
j'ai urgemment besoin d'aide avec GTK, je viens de découvrir cette bibliothèque hier, et je n'arrive pas à obtenir de texte non vide avec le composant Gtk Entry; j'ai passé pas mal de temps à arranger mon code et découvrir des manières alternative pour obtenir le texte dans le Gtk Entry, mais j'ai fait choux blanc...
Voici ma fenêtre:
Concrètement, le g_print et le printf lignes 60 et 61 sont vides quand bien même je mets du texte dans les deux cases avant de cliquer sur le bouton. En même temps l'erreur 701 au dessus ne s'exécute pas, donc Gtk arrive à trouver le widget.
Peut être est ce dû au fait que je n'ai pas appris Gtk en suivant un tutoriel, et que j'ai loupé un truc basique, mais c'est pour faire une interface à un projet d'OCR (sans librairies !), donc je n'ai pas trop le temps de m'investir dans Gtk..
Dans tout les cas merci d'avance à ceux qui prendront le temps de me répondre,
CreativeC.
PS: les codes
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <unistd.h> #include <SDL2/SDL.h> #include <gtk/gtk.h> //#include "tools/bin/resize.h" //#include "separator/separator.h" #include "binarization/binarize.h" #include "SDL_Manager/import-export.h" //Safety test env #ifndef ENV_TEST void on_start(GtkButton *button, gpointer user_data); int main(int argc, char ** argv) { // Initializes GTK. gtk_init(NULL, NULL); // Loads the UI description and builds the UI. // (Exits if an error occurs.) GtkBuilder* builder = gtk_builder_new(); GError* error = NULL; if (gtk_builder_add_from_file(builder, "plain.glade", &error) == 0) { g_printerr("Error loading file: %s\n", error->message); g_clear_error(&error); return 1; } // Gets the widgets. GtkWindow* window = GTK_WINDOW(gtk_builder_get_object(builder, "org.gtk.duel")); GtkButton* start_button = GTK_BUTTON(gtk_builder_get_object(builder, "bouton")); // Connects signal handlers. g_signal_connect(start_button, "clicked",G_CALLBACK(on_start), NULL); // Runs the main loop. gtk_main(); return 0; } void on_start(GtkButton *button, gpointer user_data){ GtkBuilder* builder = gtk_builder_new(); GError* error = NULL; if (gtk_builder_add_from_file(builder, "plain.glade", &error) == 0) { g_printerr("Error loading file: %s\n", error->message); g_clear_error(&error); return 1; } GtkEntry* entry_in = GTK_ENTRY(gtk_builder_get_object(builder, "in")); GtkEntry* entry_out = GTK_ENTRY(gtk_builder_get_object(builder, "out")); const gchar * ptdr = gtk_entry_get_text( entry_in ); char * inStr = (char*) ptdr; if (!ptdr) return 701; g_print(ptdr); printf("==%s\n",inStr); char * outStr = (char*) gtk_entry_get_text( entry_out ); int x; int * px = &x; int y; int * py = &y; SDL_Surface * image = load_image(inStr, px, py); Uint8 * boardg = NULL; boardg = malloc(x * y * sizeof(Uint8)); gray(image,boardg); Uint8 * board2 = NULL; board2 = malloc(x * y * sizeof(Uint8)); binarize(boardg,board2,x,y); save(board2,x,y,outStr); printf("\npaula\n\n"); //free(boardg); free(board2); //*/ gtk_main_quit(); //return 0; } #endif
Code XML : 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.36.0 --> <interface> <requires lib="gtk+" version="3.12"/> <object class="GtkWindow" id="org.gtk.duel"> <property name="name">org.gtk.duel</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="title" translatable="yes">OCR Elysium</property> <child> <object class="GtkGrid"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkEntry" id="in"> <property name="name">in</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> <property name="valign">center</property> </object> <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> </packing> </child> <child> <object class="GtkEntry" id="out"> <property name="name">out</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> <property name="valign">center</property> </object> <packing> <property name="left_attach">1</property> <property name="top_attach">1</property> </packing> </child> <child> <object class="GtkButton" id="bouton"> <property name="label" translatable="yes">Démarrer</property> <property name="name">bouton</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="halign">center</property> <property name="valign">center</property> </object> <packing> <property name="left_attach">1</property> <property name="top_attach">2</property> </packing> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> </object> </child> <child type="titlebar"> <placeholder/> </child> </object> </interface>
Partager