вопрос по GTK

компьютеры программирование gtk

Господа (и дамы) программисты, объясните мне пожалуйста, почему функция gtk_entry_get_text() может возвращать значение 0?

Вот код, если нужно:

#include <gtk/gtk.h>
#include <stdio.h>


void qs(GtkWidget *widget,int mass[])
{
int i=0;

for (i; i<5; i++)
{
g_print("%i\n",mass[i]);
}

}



int main(int argc, char** argv) {

int a[5];


GtkWidget *window;
GtkWidget *table;

GtkWidget *label0;
GtkWidget *label1;
GtkWidget *label2;
GtkWidget *label3;
GtkWidget *label4;
GtkWidget *label5;
GtkWidget *label6;

GtkWidget *combo;

GtkWidget *entry1;
GtkWidget *entry2;
GtkWidget *entry3;
GtkWidget *entry4;
GtkWidget *entry5;

GtkWidget *button;


gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "Лабораторная работа №2");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);


table = gtk_table_new(8,2,FALSE);
gtk_container_add(GTK_CONTAINER(window), table);


label0 = gtk_label_new("Введите числа");
label1 = gtk_label_new("число 1:");
label2 = gtk_label_new("число 2:");
label3 = gtk_label_new("число 3:");
label4 = gtk_label_new("число 4:");
label5 = gtk_label_new("число 5:");
label6 = gtk_label_new("направление сортировки");

gtk_table_attach(GTK_TABLE(table), label0, 0, 2, 0, 1,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label3, 0, 1, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label4, 0, 1, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label5, 0, 1, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label6, 0, 1, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);

entry1 = gtk_entry_new();
entry2 = gtk_entry_new();
entry3 = gtk_entry_new();
entry4 = gtk_entry_new();
entry5 = gtk_entry_new();

gtk_table_attach(GTK_TABLE(table), entry1, 1, 2, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry2, 1, 2, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry3, 1, 2, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry4, 1, 2, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry5, 1, 2, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);


combo = gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По возростанию");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По убыванию");

gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);

button = gtk_button_new_with_label("Сортировать");

gtk_table_attach(GTK_TABLE(table), button, 0, 2, 7, 8,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);

a[0]= atoi(gtk_entry_get_text(GTK_ENTRY(entry1)));
a[1]= atoi(gtk_entry_get_text(GTK_ENTRY(entry2)));
a[2]= atoi(gtk_entry_get_text(GTK_ENTRY(entry3)));
a[3]= atoi(gtk_entry_get_text(GTK_ENTRY(entry4)));
a[4]= atoi(gtk_entry_get_text(GTK_ENTRY(entry5)));



gtk_widget_show_all(window);

g_signal_connect(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);


g_signal_connect(button, "clicked",
G_CALLBACK(qs), a);


gtk_main();

return 0;
}


Примечание:
мне в данный момент не до русского языка, уж простите. когда будет что сортировать тогда и русский язык поправим.

Примечание:
В общем я просто дурочка. Переписала, заработало:


#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>

GtkWidget *edit[5];



void qs(GtkWidget *widget, gpointer *data)
{

int n=5;
int i=0;
int a[5];



a[0]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[0])));
a[1]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[1])));
a[2]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[2])));
a[3]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[3])));
a[4]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[4])));


i=0;
for (i; i<5; i++)
{
g_print("%i\n",a[i]);
}

g_print("\n");

}


int main(int argc, char** argv) {


GtkWidget *window;
GtkWidget *table;

GtkWidget *label0;
GtkWidget *label1;
GtkWidget *label2;
GtkWidget *label3;
GtkWidget *label4;
GtkWidget *label5;
GtkWidget *label6;

GtkWidget *combo;


GtkWidget *button;


gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "Лабораторная работа №2");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);


table = gtk_table_new(8,2,FALSE);
gtk_container_add(GTK_CONTAINER(window), table);


label0 = gtk_label_new("Введите числа");
label1 = gtk_label_new("число 1:");
label2 = gtk_label_new("число 2:");
label3 = gtk_label_new("число 3:");
label4 = gtk_label_new("число 4:");
label5 = gtk_label_new("число 5:");
label6 = gtk_label_new("направление сортировки");

gtk_table_attach(GTK_TABLE(table), label0, 0, 2, 0, 1,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label3, 0, 1, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label4, 0, 1, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label5, 0, 1, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label6, 0, 1, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);

edit[0] = gtk_entry_new();
edit[1] = gtk_entry_new();
edit[2]= gtk_entry_new();
edit[3]= gtk_entry_new();
edit[4]= gtk_entry_new();

gtk_table_attach(GTK_TABLE(table), edit[0], 1, 2, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[1], 1, 2, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[2], 1, 2, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[3], 1, 2, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[4], 1, 2, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);


combo = gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По возрастанию");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По убыванию");

gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);

button = gtk_button_new_with_label("Сортировать");

gtk_table_attach(GTK_TABLE(table), button, 0, 2, 7, 8,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);




gtk_widget_show_all(window);

g_signal_connect(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);


g_signal_connect(button, "clicked",
G_CALLBACK(qs), NULL);


gtk_main();

return 0;
}
Ответы:
по возрАстанию


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.