GTK-frage
-
Guten Morgen aller seits
ich bin gerade dabei ein GUI-Prog in C mit gtk zu schreiben hab eigentlich auch alles so hin bekommen wie ich es wollte jetz hab ich nur noch ein Problem.
Und zwar ich will das mein Programm mir den status anzeigt also so ein kleines Protokoll macht so wie dieses
hier: http://img13.imageshack.us/i/forumfrage.png/kann mir da jemand helfen
ich benutze Codeblocks mit dem GNU GCC Compilerschon mal danke
mfg Fragilips: wer eine Schreibfehler findet darf ihn behalten
-
... Du schreibst das ganz normal in eine sequentielle Datei, wenn ein Êvent auftritt oder Du benutzt die Glib Funktion
g_log_set_handler
http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html
für Systemereignisse - oder ich habe Deine Frage nicht richtig verstanden..
-
Falls du das Widget meinst, welches dafür verwendet wird; das ist ein ganz normales TextView.
-
@hijklmnop danke für deine Antwort habs jetz mit TextView hinbekommen danke
-
guten morgen
also sorry wenn ich das jetz noch hier rein schreibe aber ich hab da noch ne frage
also ich hab jetz mein GUI prog mit gtk vollendet
jetz hab ich nurn och ein problemm
ich kann kliocken und machen was ich will es öffnet auch immer genau die fenster die ich haben möchte
nur ich brauche eine schleife im gtk die das datum und uhrzeit einliest wie das geht weiß ich schon nur das soll solange gemacht werden bis ne bestimte zeit erreicht ist also muss ich in einer schleife das machen das prob is jetzt nur das
wenn ich in gtk was klicke führt er einfach die schleife aus und reagiert nicht auf meine gedrückten button das is ja auch logisch da ja das prog mit der schleife beschäftigt ist. nur wie mach ich das der die schleife zwar abarbeitet aber gleichzeitig auch die buttons abfragt. weil wenn uch das mit einer großen ober schleife über das ganze gtk zeug mach dann erstellt er mir unentlich fenster ich komm irgend wie nicht weiter kann mir jemand helfenmfg fragili
-
Threads oder etwas vergleichbares brauchst du.
-
kannst du mir ein beispiel prog geben ??
oder an eine einfachen beispiel erklären ??
-
fragili schrieb:
guten morgen
also sorry wenn ich das jetz noch hier rein schreibe aber ich hab da noch ne frage
also ich hab jetz mein GUI prog mit gtk vollendet
jetz hab ich nurn och ein problemm
ich kann kliocken und machen was ich will es öffnet auch immer genau die fenster die ich haben möchte
nur ich brauche eine schleife im gtk die das datum und uhrzeit einliest wie das geht weiß ich schon nur das soll solange gemacht werden bis ne bestimte zeit erreicht ist also muss ich in einer schleife das machen das prob is jetzt nur das
wenn ich in gtk was klicke führt er einfach die schleife aus und reagiert nicht auf meine gedrückten button das is ja auch logisch da ja das prog mit der schleife beschäftigt ist. nur wie mach ich das der die schleife zwar abarbeitet aber gleichzeitig auch die buttons abfragt. weil wenn uch das mit einer großen ober schleife über das ganze gtk zeug mach dann erstellt er mir unentlich fenster ich komm irgend wie nicht weiter kann mir jemand helfenmfg fragili
Ich habe Deine Frage schon wieder nicht richtig verstanden....
Ich versuche es mal wiederzugeben: Also Du hast den normalen gtk_main Loop. Dazwischen möchtest Du einen Timer "kontrollieren", etwa runterzählen (?); Wie Du ja sicher weisst, werden Deine Buttons im gtk_main abgefragt und dadurch Deine Callback Funktionen aufgerufen. Das sollte eigentlich klar sein. - oder?
Wenn Du einen Timer zusätzlich benötigst schau Dir doch mal folgenden Link an:
http://www.gtk.org/api/2.6/glib/glib-The-Main-Event-Loop.html
insbesondereg_timeout_add
Vielleicht hilfts
-
also ich hab das so gemeint:
ich hab meine schleife die ja die buttons abfrägt
so nun will ich aber eine schleife haben die andauernt die zeit enliest
das prob is ja das die schleife eine entlos schleife sein muss da ich
das ergebnis immer abfrage und wenn ne bestimmte zeit ereicht ist macht es hald
was. nun hab ich aber merere zeiten bei denen was gemacht wirt aslo muss die
schleife immer weiter laufen und das soll lonage gemacht werden bis man den bestimmten butto drückt nun start ich die schleife mit einen button und der
bleit ja solange gedrück bis die funktion beendent ist also kann ich es nict mit
meinen ende button beenden
ich hoffe ich hab es jetzt besser erklären können
-
fragili schrieb:
ich hab meine schleife die ja die buttons abfrägt
Das sollte doch die gtk_main sein - oder??
Welche Programmiersprache verwendest Du??
-
äm ja des machts ja ich habs nur ein bischen besser ausführen wollen
-
Gut - also kommen wir zum nächsten Punkt
fragili schrieb:
so nun will ich aber eine schleife haben die andauernt die zeit enliest
das prob is ja das die schleife eine entlos schleife sein muss da ich
das ergebnis immer abfrage und wenn ne bestimmte zeit ereicht ist macht es hald
was.Hier greift genau mein Vorschlag in meinem oberen Beitrag:
g_timeout_add
Mit dieser Funktion kannst Du festlegen, dass eine bestimmte Funktion (Callback) in einem bestimmten Intervall aufgerufen wird (völlig unabhängig, was der Benutzer macht). Ich denke das trifft Deine obige Angabe...
fragili schrieb:
nun hab ich aber merere zeiten bei denen was gemacht wirt aslo muss die
schleife immer weiter laufen und das soll lonage gemacht werden bis man den bestimmten butto drücktDas sollte mit dieser Funktion auch abgedeckt sein....
fragili schrieb:
nun start ich die schleife mit einen button und der
bleit ja solange gedrück bis die funktion beendent ist also kann ich es nict mit
meinen ende button beendenHier weiss ich wieder nicht, was Du meinst....
-
also das mit den timeout hört sich gut an
das probier ich mal aus
was ich mit dem anderen meite ist das die funktion solange leuft bis ich den ende button klicke wie verbinde ich das mit dem timeout
-
fragili schrieb:
also das mit den timeout hört sich gut an
das probier ich mal aus
was ich mit dem anderen meite ist das die funktion solange leuft bis ich den ende button klicke wie verbinde ich das mit dem timeoutDas ist jetzt eher ein Programmierproblem... ich würde in der Funktion abfragen, ob das Fenster geschlossen wurde - etwa so (ich kenne ja Dein Programm nicht):
if (widget->window == NULL) return FALSE; // return FALSE in der Callbackfunktion beendet die g_timeout_add settings (beachte auch die Doku im Link)
Man kann natürlich auch irgendein Flag setzen... wie auch immer...
-
ok das probier ich jetzt mal
danke für deine hilfe
-
hey danke das mit dem timeout funktioniert perfekt
danke (mal wieder)
-
noch mal ne frage
also wenn ich über einen butoon oder über ein bild oder label fahre und dann drauf bleibe aber nicht drücke dann soll so eine kleine info kommen die dann beim maus zeiger auf blendet so wie es eigentlich bei jeden prog ist hier mal ein bild was ich meine
http://img836.imageshack.us/i/fasdfdsfds.png/
mfg fragili
-
Mach doch für jede Frage einen eigenen Thread auf... Benutzer, die nach einer Antwort auf ein spezielles Thema suchen, haben es dann wesentlich einfacher...
Versuche es mal damit:gtk_widget_set_tooltip_text (widget, "Some tips");
-
ok erst mal danke
das mit dem Thread werd ich mir zu herzen nehmen