PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : uhrzeit in GTK fenster aktuell anzeigen



kurm_de
15-08-2005, 15:57
hi,

ich bin grad mal das GTK 1.2 Tutorial auf www.gtk.org durchgegangen. ich habs jetzt schon geschafft ein Label auf einem Fenster zu erstellen. In dem Label steht die Uhrzeit die bei Programmstart reingeschrieben worden ist.
Wie kann ich nun das Label aktuallisieren?
So das z.B. jede Sekunde das Label aktuallisiert wird.

hier der Code:


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


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



int main( int argc,
char *argv[] )
{
time_t now;
time(&now);

GtkWidget *window;
GtkWidget *label1;

gtk_init(&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
label1 = gtk_label_new (ctime(&now));

gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (destroy), NULL);

gtk_container_set_border_width (GTK_CONTAINER (window), 10);
gtk_container_add (GTK_CONTAINER (window), label1);

gtk_widget_show_all (window);

gtk_main ();


return(0);
}


Gruß kurm_de

BLUESCREEN3D
18-08-2005, 10:53
Einfach mal ins Inhaltsverzeichnis gucken hätte geholfen...

http://www.gtk.org/tutorial1.2/gtk_tut-17.html

kurm_de
24-08-2005, 18:25
ich wollte eigentlich wissen wie man z.b. ein Label zur Laufzeit änder kann.
Denn ich hab mir ein kleines Windrad gebaut und an den Parallelport angeschlossen.
An dem Windrad ist ein Reed-Kontakt. Bei jeder umdrehung werden zwei Pins am Port geschlossen. Jetzt wollte ich den Parallelport auslesen und messen wieviele Kontakte pro Sekunde zustande kommen.
Das Auslesen des Parallelports ist kein Problem, aber wie bringe ich die gemessenen Daten zur Laufzeit in das Label?

Gruß kurm_de

peschmae
24-08-2005, 20:59
To change the label's text after creation, use the function:

void gtk_label_set_text( GtkLabel *label,
char *str );


aus dem Tutorial.

Also gtk_label_set_text(label1, "guten tag"); in deinem Falle.

Andere Frage: Hat das einen speziellen grund dass du Gtk 1.2 verwendest? Das würde ich nämlich eher nicht - das ist veraltet. Gtk 2.x ist zwar nicht mehr ganz so leicht und schnell aber dafür bietets Antialiasing (Schriften sehen nicht mehr so hässlich aus) und wird auch von den meisten anderen Anwendungen verwendet. Ich nehme mal an dass auch sonst ein paar Sachen verbessert wurden ;)

MfG Peschmä

[0x[90]|
27-08-2005, 16:31
peschmae, is ne gute Frage. Ne bessere finde ich aber: Warum verwendet er ueberhaupt GTK?

kurm_de: Du hast lediglich ein paar Daten die du ausgeben moechtest, und deinem Text zufolge brauchst du keinerlei Interaktion von Seiten des Programms zu deinem Windraedchen. Warum machst du dir also die Muehe GTK zu verwenden (und zu lernen, wie es scheint)?
Ich wuerde dir empfehlen, das ganze in der Konsole auszugeben. Falls noetig kannst du slang oder ncurses verwenden, um die Sache ein wenig bunter zu machen. Doch GTK wuerde ich nicht gerade fuer /sowas/ verwenden (ausser natuerlich es ist ein Gnome Applet, dann sehe ich den Zweck der Verwendung von GTK).

Bye

RapidMax
28-08-2005, 15:06
Und meinst du ncurses oder slang muss man nicht lernen? Für die beschriebene Funkionalität ist das etwa gleich kompliziert wie GTK. Hingegen die Frage ob man nicht erst mal das ganze als Konsolenanwendung auslegt ist berechtigt.

Bei GTK rate ich dir auch zu GTK 2.x, dann würdest du die gesuchte Funktionalität in g_timeout_add() finden.

Gruss, Andy

[0x[90]|
28-08-2005, 15:25
RapidMax, nein, ncurses/slang muss man nicht in dem Sinne lernen. Man hat ein Set an funktionen in einer Referenz stehen und benutzt sie. Bei GTK musst du dich aber mit den Strukturen und Aufbauten der Library auskennen. Du musst wissen was GObject ist, und wie das ganze funktioniert. Ich denke, das "lernen" von GTK kann man nicht gleichsetzen wie das "lernen" (oder eher, benutzen) von ncurses/slang. Es ist einfach schwerer (da umfangreicher) und zeitaufwaendiger.
Falls er aber das ganze als GTK-Lern-Projekt betrachtet und ihm der Zeitaufwand egal ist, dann ist das natuerlich etwas anderes. Aber dann wuerde ich ihm auch empfehlen, GTK 2 zu lernen, falls er seine Software nicht ausschliesslich fuer Pentium 1/2 und AMD K6er schreiben will.