Und damit du nicht ganz verzweifelst hab ich das sogar noch in dein Programm eingebaut:+Fuss+ hat geschrieben:Ich hasse Gtk...
Code: Alles auswählen
#include <gtk/gtk.h>
#include <stdio.h>
void button_geklickt(GtkWidget *button_widget, gpointer data)
{
printf("Button \"%s\" geklickt!\n",
gtk_button_get_label(GTK_BUTTON(button_widget)) );
gtk_main_quit();
}
// Wird vom Timer alle 0.75 Sekunden aufgerufen
static gboolean
time_handler(GtkWidget *widget)
{
static int visible = 0;
if( visible )
{
gtk_button_set_label( (GtkButton*)widget, "Frohe Weihnachten!" );
visible = 0;
}
else
{
gtk_button_set_label( (GtkButton*)widget, "" );
visible = 1;
}
return TRUE;
}
int main (int argc, char *argv[])
{
gtk_init(&argc, &argv);
GtkWidget *window;
GtkWidget *button;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Weihnachten");
gtk_container_set_border_width(GTK_CONTAINER(window), 100);
g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
button = gtk_button_new_with_label("Frohe Weihnachten!"); // Ausgabe der Schrift des Buttons
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_geklickt), NULL);
g_timeout_add(750, (GSourceFunc) time_handler, (gpointer) button); // Timer mit 0.75 Sekunden Intervall registrieren
gtk_widget_show(button);
gtk_container_add(GTK_CONTAINER(window), button);
gtk_widget_show(window);
gtk_main();
return 0;
}
Und der Timer macht nichts anderes als dir nach einer bestimmten Zeit immer wieder ein Event zu schicken, das du dann in einer Funktion auffangen kannst und zb den Text ändern kannst.