c - 在按钮单击时选择用户的选择
问题描述
我需要选择用户的选择并将值存储在全局变量中,然后在用户选择按钮后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
尽管我可以看到正确的值。
解决方案
推荐阅读
- node.js - Mongoose 连接多个数据库
- java - 如何针对两个条件执行 RealmQuery
- batch-file - 需要使用批处理文件(添加到系统路径)的当前路径(我在终端中写入“addpath”)
- javascript - Firefox 排序数组错误
- javascript - 避免许多 if 语句的最佳方法是什么?
- java - 如何使用 xslt 将父节点命名空间复制到子元素?
- symfony - 我无法在 Symfony 3.4 中使用 Monolog 的特定通道将日志写入文件
- bash - 在 bash 中的命令之前设置变量
- javascript - 刷新页面返回 [object CSSStyleDeclaration]
- php - 如何通过 cPanel 将网页永久重定向到另一个网页