Bonjour à tous,
J'essaye de créer une listbox que je veux parcourir dès que l'interface graphique est ouvert.
Ce que j'ai écrit fonctionne bien quand j'amène le curseur de la souris dans la listbox et clique gauche sur une ligne:
je récupère le contenu de la ligne sélectionnée et je lance un sous-programme avec ce contenu en paramètre.
Je souhaiterai avoir la main avec les flèches "monter" et "descendre" directement quand j'entre sur la listebox mais sans cliquer sur une ligne.
J'ai essayé avec la ligne self.L.bind('<Enter>',self.__call__), mais ça ne fonctionne pas (problème d'arguments manquants ou en trop)
où est l'erreur
Voici mon programme:
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 import tkinter as tk class TestAfter(tk.Tk): def __init__(self,parent=None): tk.Tk.__init__(self,parent) self.parent=parent self.F1=tk.Frame(self) self.s=tk.Scrollbar(self.F1) self.L=tk.Listbox(self.F1) #self.L.bind('<Enter>',self.__call__) #self.L.bind('<Leave>',self.ArretAfter) self.s.pack(side=tk.RIGHT,fill=tk.Y) self.L.pack(side=tk.LEFT,fill=tk.Y) self.L['yscrollcommand']=self.s.set self.s['command']=self.L.yview for i in range(30): self.L.insert(tk.END,str(i)) self.F1.pack(side=tk.TOP) self.L.selection_set(0) #self.L.focus_force() self.F2=tk.Frame() self.lab=tk.Label(self.F2) self.lab.pack() self.F2.pack(side=tk.TOP) self.sel=() def __call__(self): self.p=self.lab.after(200,self.__call__) if self.L.curselection()!=self.sel: self.sel=self.L.curselection() self.lab.config(text=str(self.sel[0])) self.LancerProgramme(self.sel) #def ArretAfter(self): # self.lab.after_cancel(self.p) def LancerProgramme(sel,x): print("Programme lancé avec",x) if __name__=="__main__": test=TestAfter(None) test.title("Test after dans une classe") test() test.mainloop()
Partager