GTK && std-Programme



  • Hallo,

    Ich habe ein Problem :
    Wenn ich in einem GTK-Programm z. B. 4 * while-Schleifen einbaue, die jeweils eine 2 Sekundige Wartezeit bewirken , so werden zuerst alle 4 while-Schleifen ausgeführt && dann erst die GTK-Programme , sprich erst dann werden die grafischen Objekte erstellt, obwohl die Reihenfolge im Code genau anders rum ist.



  • hmm??? 😕 kannst du es nochmal (verständlicher) erklären? Ein bisschen von deinem Code wäre auch nicht schlecht.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Hm, zeig mal deinen Code.
    Ohne den kann ich auch nur raten 😉



  • Er hat sicher etwas wie:

    Gtk::Window w;
    widgets_hinzufügen();
    
    while() {}
    while() {}
    while() {}
    while() {}
    
    starte_gtk_loop_und_zeige_fenster(w);
    

    Dabei werden dir leider nur Threads helfen, oder - je nachdem was du brauchst - auch ein Timer, der eine Funktion alle X Milisekunden aufruft.
    (Gibts beides in der Glib, die Gtk auch nutzt)

    Du könntest auch das Fenster vorher mit window.show() zeigen, aber dann hängt es so lange bis die Schleifen abgearbeitet wurden.



  • Code:

    gtk_init(&.....
    ...
    GtkWidget *button = gtk_button_new_with_label("Button1");
    GtkWidget *progressbar = gtk_progressbar_new();
    ....
    gtk_widget_show_all(window); ( In dieser befinden sich alle oben erstellten grafischen Objekte : Button, Label, Image.. )
    
    time_t timebegin = 0;
    time_t timeend = 0;
    
    gtk_progressbar_set_fraction(progressbar, 0.1);
    timebegin = time(NULL);
    timeend = timebegin + 2;
    while((time(NULL)) <= timeend);
    gtk_progressbar_set_fraction(progressbar, 0.2);
    timebegin = time(NULL);
    timeend = timebegin + 2;
    while((time(NULL)) <= timeend);
    .....
    

Anmelden zum Antworten