Endlosschleife von GTK+ mitbenutzen?

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hi.
Ich habe gestern mit GTK+ angefangen und es gefällt mir doch recht gut :P
Nun brauche ich allerdings eine Möglichkeit, die Endlosschleife von GTK+ mitzubenutzen. Dafür müsste es doch eine Funktion geben, oder? Zumindest habe ich in der Referenz nichts dazu gefunden, eventuell weil ich auch nicht weiß, wie sowas richtig heißt.

Vielen Dank!

~ Chris
Grüßle.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Stichwort Threads.

Beispiel:

Code: Alles auswählen

import gtk
import thread
import time

def mythread():
    while True:
        time.sleep(0.5)
        btn.set_label(str(int(btn.get_label())+1))
        # Label des Buttons um eins hochzaehlen

win = gtk.Window()
btn = gtk.Button('1')

win.add(btn)
win.set_size_request(200, 200)
win.set_position(gtk.WIN_POS_CENTER)
win.show_all()

gtk.gdk.threads_init()
# alle Threads die zwischen init und leave gestartet werden fliessen
# in die gtk-Hauptschleife ein
thread.start_new_thread(mythread, tuple())
gtk.gdk.threads_leave()

gtk.main()
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Aua. Wenn du die Schleife einfach nur mitbenutzen willst reicht ``gobject.idle_add(callable)``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

@ Dauerbaustelle: Danke für den Tipp, aber wie Leonidas schon schrieb, kann man das wohl eher vergessen.
@ Leonidas: Danke :)

~ Chris
Grüßle.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Was heißt denn hier aua :twisted:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dauerbaustelle hat geschrieben:Was heißt denn hier aua :twisted:
Aua, weil ich den Fehler kenne, nämlich von mir selbst vor einigen Jahren, wo ich mit Threads umständlich ``gobject.timeout_add`` implementiert habe. :D
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten