Seite 1 von 1

ProgressBar während der Erstellung von QR-Codes

Verfasst: Dienstag 8. August 2017, 15:09
von DMD-OL
hi
ich lese den gesamten inhalt einer datenbank aus und erstelle daraus qr-codes.
da das (je nach dem) etwas länger dauert, würde ich gern solange eine ProgressBar in Tkinter zeigen.
kann mir da jemand helfen?
ich habe diesen code gefunden, den ich gern verwenden möchte:

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk


class SampleApp(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.button = ttk.Button(text="Start", command=self.start)
        self.button.pack()
        self.progress = ttk.Progressbar(self, orient="horizontal",
                                        length=200, mode="determinate")
        self.progress.pack()

        self.bytes = 0
        self.maxbytes = 0

    def start(self):
        self.progress["value"] = 0
        self.maxbytes = 50000
        self.progress["maximum"] = 50000
        self.read_bytes()

    def read_bytes(self):
        '''simulate reading 500 bytes; update progress bar'''
        self.bytes += 500
        self.progress["value"] = self.bytes
        if self.bytes < self.maxbytes:
            # read more bytes after 100 ms
            self.after(100, self.read_bytes)

app = SampleApp()
app.mainloop()
muß ich die gesamte größe des inhalts der datenbank kennen, damit ich die maximalgröße (self.maxbytes)
für die progessbar angeben kann?

Re: ProgressBar während der Erstellung von QR-Codes

Verfasst: Dienstag 8. August 2017, 15:46
von __deets__
Ja, musst du. Zumindest grob, ggf. kann man so etwas abschaetzen, aber ohne wenigstens eine grobe Idee geht es nicht.

Du bist damit auch dem Geheimnis auf der Spur, warum in beliebten Betriebssystemen gelegentlich Fortschrittsbalken ewig an den 99% rumknabbern....

Re: ProgressBar während der Erstellung von QR-Codes

Verfasst: Dienstag 8. August 2017, 16:12
von DMD-OL
und wie mach ich das???
ich hab schon krasse probleme, die progressbar überhaupt anzeigen zu lassen, während der rechner busy is :(

Re: ProgressBar während der Erstellung von QR-Codes

Verfasst: Dienstag 8. August 2017, 16:31
von Sirius3
@DMD-OL: die Anzahl der Einträge in einer Datenbank zu zählen sollte doch kein Problem sein? Das eigentliche Arbeiten würde ich in einem Hintergrundthread machen. Die ganze Logik sollte unabhängig von einer GUI laufen, z.B. in dem man eine Klasse hat, die man nach dem Fortschritt fragen kann, oder ein Event-System, das sich selbst bei jeder Änderung meldet.