Bonjour
J'apprends le dév avec Python. J'ai créé un outil avec interface graphique en tkinter. Cela me permet de générer des demandes de réparation pour une société de maintenance avec un QRCODE et un document récapitulant les éléments de la demande pour le technicien. Une fois la demande remplie, j'enregistre le fichier en pdf.
J'arrive à faire cela. Cependant, dès lors que j'ouvre une deuxième demande de réparation depuis ma page principale, au moment de valider l'enregistrement j'ai ceci comme erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
    return self.func(*args)
  File "/home/xxx/Documents/python/travail-python/reptravail/di2.py", line 492, in valider
    recup_valeur()
  File "/home/xxx/Documents/python/travail-python/reptravail/di2.py", line 473, in recup_valeur
    creerpdf.genererpdf (originefinal, sitefinal, unitefinal, entreeUnfinal, entreeDeuxfinal, entreeTroisfinal, codematfinal, quantitefinal, entreeCinqfinal, remarquefinal)
  File "/home/xxx/Documents/python/travail-python/reptravail/creerpdf.py", line 178, in genererpdf
    pdf.save()
  File "/home/xxx/.local/lib/python3.8/site-packages/reportlab/pdfgen/canvas.py", line 1244, in save
    self._doc.SaveToFile(self._filename, self)
  File "/home/xxx/.local/lib/python3.8/site-packages/reportlab/pdfbase/pdfdoc.py", line 207, in SaveToFile
    raise RuntimeError("class %s instances can only be saved once" % self.__class__.__name__)
RuntimeError: class PDFDocument instances can only be saved once
J'ai lu le code de reportab et je comprends que je ne peux pas générer 2 fichiers PDF avec la même instance tkinter.
J'ai pourtant ma demande qui, une fois rappelée, est vide.

La seule solution est de fermer complètement mon programme. Ce n'est pas pratique si on a plusieurs demandes à faire.
Si quelqu'un aurait une solution pour vider l'instance tkinter.

Je précise que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
pdf.showPage()  
    pdf.save()
sont bien présents mais cela ne marche pas. Il me semblait que pdf.showPage() réinitialisait la page.

Merci pour votre aide, car là je cale