Я хочу создать программу на C с интерфейсом GTK, которая будет периодически обновлять и отображать значение переменной (POS) после получения состояния некоторых кнопок переключения и паузы / сна в течение 1 секунды.
По существу, естьдве кнопки, ВВЕРХ и ВНИЗ, и когда нажата ВВЕРХ, то POS должен быть обновлен до POS = POS + 1, а когда нажата кнопка ВНИЗ, он должен быть обновлен до POS = POS - 1.
Если обе кнопки нажаты(они являются кнопками переключения), после перехода к +1 и -1 он должен вернуться к тому же значению.
После окончания цикла метка (LABEL) должна отображать значение POS и делать паузу в течение 1 секунды, прежде чемначиная снова.
Я сделал минимальный рабочий пример, но застрял в создании цикла.
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *fixed;
GtkWidget *UP;
GtkWidget *DOWN;
GtkWidget *LABEL;
float POS=0;
gchar *text;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "GtkFixed");
gtk_window_set_default_size(GTK_WINDOW(window), 300, 300);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), fixed);
DOWN = gtk_toggle_button_new_with_label("DOWN");
gtk_fixed_put(GTK_FIXED(fixed), DOWN, 100, 200);
gtk_widget_set_size_request(DOWN, 80, 30);
UP = gtk_toggle_button_new_with_label("UP");
gtk_fixed_put(GTK_FIXED(fixed), UP, 200, 200);
gtk_widget_set_size_request(UP, 80, 30);
LABEL = gtk_label_new ("0");
gtk_fixed_put(GTK_FIXED(fixed), LABEL, 150, 100);
/*This while loop should do but I don't know how to make it run
while TRUE {
if (gtk_toggle_button_get_mode(GTK_TOGGLE_BUTTON(UP))) {
POS = POS + 1.;}
if (gtk_toggle_button_get_mode(GTK_TOGGLE_BUTTON(DOWN))) {
POS = POS - 1.;}
text = g_strdup_printf (" %f ", POS);
gtk_label_set_label (GTK_LABEL(LABEL), text);
sleep(1);
}; */
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
}