Выбор пользователя по нажатию кнопки - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужно выбрать выбор пользователя и сохранить значение в глобальной переменной, после того как пользователь выберет vbox с кнопками, они должны исчезнуть, и управление вернется к create_window(). Я не знаю, является ли это лучшим методом для такой задачи.

#include "test.h"

int number_players;

void create_window() {

    GtkWidget *window;

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    gtk_window_set_title (GTK_WINDOW (window), "test");
    gtk_window_maximize (GTK_WINDOW (window));
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);

    get_number_players(window);

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

    gtk_widget_show_all (window);

    g_print("%d\n", number_players);

    gtk_main();

}

void get_number_players (GtkWidget *window) {

    GtkWidget *vbox, *button_choice1, *button_choice2, *button_choice3;

    vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);

    button_choice1 = gtk_button_new_with_label("six Players");
    button_choice2 = gtk_button_new_with_label("Seven Players");
    button_choice3 = gtk_button_new_with_label("nine Players");

    gtk_container_add (GTK_CONTAINER (window), vbox);
    gtk_container_add (GTK_CONTAINER (vbox), button_choice1);
    gtk_container_add (GTK_CONTAINER (vbox), button_choice2);
    gtk_container_add (GTK_CONTAINER (vbox), button_choice3);

    g_signal_connect(G_OBJECT(button_choice1), "clicked", G_CALLBACK(read_choice), GINT_TO_POINTER(6)); 
    g_signal_connect(G_OBJECT(button_choice2), "clicked", G_CALLBACK(read_choice), GINT_TO_POINTER(7));
    g_signal_connect(G_OBJECT(button_choice3), "clicked", G_CALLBACK(read_choice), GINT_TO_POINTER(9));
}

void read_choice (GtkWidget *window, gpointer data) {

    number_players = GPOINTER_TO_INT(data);
}

void destroy (GtkWidget *window, gpointer data)
{
    gtk_main_quit ();
}

По какой-то причине глобальная переменная number_players не печатает корректность, если я печатаю в read_choice, хотя я вижу правильное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...