Bonjour à tous,

J'ai créé un script dans lequel je défini des valeurs d'Entry soit lors de l'initialisation soit après avoir cocher des Checkbutton. Cela marche très bien si j'utilise directement ce script. J'aimerais le lancer via un autre script. Tout se passe bien sauf que je ne parviens plus à avoir ces entrées qui s'initialisent. Il y a-t-il une méthodologie particulière à appliquer?

J'appèle mon script externe simplement comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 NaNB.main(is_bh_from_external=self.checklist_plan.bh_mode)
Génération de mes widget (dans une boucle):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
vcmd_prefix = (self.register(self.validate_prefix), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
self.text_entry[beamset.DicomPlanLabel]=tkinter.StringVar()
            self.beamset_prefix_list[beamset.DicomPlanLabel] = tkinter.Entry(beamset_frame, width=5, validate='all', textvariable=self.text_entry[beamset.DicomPlanLabel],
                                                                             validatecommand=vcmd_prefix,fg=tk.fg_master)
            self.beamset_prefix_list[beamset.DicomPlanLabel].configure(bg=bg_frame_color)
            self.beamset_prefix_list[beamset.DicomPlanLabel].pack(side="left")
et j'ai essayé de modifier mes variable via nom_de_la_variable.set("xxx")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 self.text_entry[beamset.DicomPlanLabel].set("BH")
et via nom_du_widget.insert(0,"xxx")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
                self.beamset_prefix_list[beamset.DicomPlanLabel].delete(0, "end")
                self.beamset_prefix_list[beamset.DicomPlanLabel].insert(0, "BH")
les commandes de validation (tkinter.Entry(validatecommand=xxx)) ne fonctionnent pas non plus.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
    def validate_prefix(self, d, i, P, s, S, v, V, W):
        widget = self.nametowidget(W)
        if len(P) > 3:
            messagebox.showerror(message="Le prefix doit contenir au maximum 3 caractères", title="Erreur d'encodage")
            widget.delete(0, "end")
            # je réécrit la dernière valeur sans le nouveau caractère
            widget.insert(0, P[:-1])
        else:
            widget.delete(0, "end")
            widget.insert(0, P)
        widget.after_idle(lambda W, v: self.nametowidget(W).configure(validate=v), W, v)

Merci d'avance de votre aide