Fwd: Re: [Python-de] Tkinter und Fortschritsbalken

Albert Hermeling Albert.Hermeling at t-online.de
Son Dez 7 15:34:15 CET 2003


Am Samstag, 6. Dezember 2003 22:07 schrieb Olaf 'ruebezahl' Radicke:
> Am Samstag, 6. Dezember 2003 19:06 schrieb Albert Hermeling:

Moin allseits,

> Also eine Lösungsansatz hat Georg schon geliefert. Gibt
> aber noch mehr....
>
> > Beispiel:
> >
> > #!/usr/bin/python
> > # -*- coding: iso-8859-15 -*-
> >
> > import Tkinter
> > from Tkconstants import *
> > import time
> > import threading
> > import thread
>
> ^^^^^^^^^^^
>
> Aha!  ursprünglich wolltest du Thread benutzen.  Was
> ist den aus den Plan geworden????
das hatte ich geplant hat aber leider nicht funktioniert da in dem Programm 
noch ein Fehler mehr drin war (siehe Jans Beitrag).

>
> Wolltest du "class Rechne(threading.Thread ):" machen
> und  eine "class Progress(threading.Thread ):"
Nein ein bisschen einfacher ;-)

man nehme die Methode rechne() aus der Klasse rechne und aendere sie so ab:

class Rechne:
    def rechne(self,):
        def foo(bar):
            a=0
            while a < 10:
                a=a+1
                print a
                self.fortschrit()
                time.sleep(1)
        thread.start_new_thread(foo,(10,))

dadurch erzeuge ich den thread rechne der separat laeuft und tkinter kann dann 
die GUI neu zeichnen.

> Dann kannst du mehrere Rechnungen parallel machen
> und jede hat ihren eigenen Fortschritsbalken.
Also das parallele hatte ich so nicht geplant. Wie ich schon in der 
Anfangsmail geschrieben hatte ist dieses Programm nur als Beispiel zu sehen. 
Das Reale Programm besteht neben dem Hauptfenster inkl. Menue aus zwei 
Textfenstern und drei Fortschritsbalken. Die Fortschritsbalken muessen 
unabhaengig von einander sein duerfen also keine gemeinsamen Variablen haben.

Im Programm wird auch nicht gerechnet sondern es werden Daten von einem Format 
in ein Anderes exportiert und der Fortschritt dieser Arbeit soll halt durch 
diese Fortschritsbalken angezeigt werden.

Deshalb ist die Methode von Georg mit update() die beste. 

Trozdem war dein Beitrag sehr informativ und ich bedanke mich bei Dir und 
allen Anderen die mir bei meinem Problem geholfen haben.

mfg

Albert