| 12
 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
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 
 |  
# essai de construction auto de listbox 01
from tkinter import*
 
class Listes:
    def __init__(self):
        self.elements = []
 
    def add_element(self, element, name):
        for i, item in enumerate(element):
            name.insert(END, element[i])
 
    def choix_element(self, name): # ne fonctionne pas sans valider par le bouton
        choix_list=name.get(name.curselection())
        print(str(name)[1:], choix_list, str(name)[6:7])
        etiquettes[int(str(name)[6:7])].config(text=choix_list)
 
def build_et_place_Lbx(fen): # construction et placement de n listbox vides
    global lists
    lists=[]
    for i in range(5):
        list = Listbox(fen, width=8, height=6, name='list[' + str(i) + ']')
        list.place(x= 10 + i * 80, y= 20 )
        lists.append(list)
 
def build_et_place_Etq(fen): # construction et placement de n Labels vides
    global etiquettes
    etiquettes=[]
    for i in range(5):
        etiquette = Label(fen, text= '........',font=('"Consolas" 8'),)
        etiquette.place(x= 8 + i * 80, y= 120 )
        etiquettes.append(etiquette)
 
def choix(): # actionné par le bouton pour essai
    for w in lists:
        if w.focus_get()==w:
            f=(str(w)[6:7]) # ne convient que si le nb de listes est <= 10 !
##            print(w, f)
    lists[int(f)].bind("<<ListboxSelect>>", li.choix_element(lists[int(f)]))
 
#---
fen= Tk()
fen.geometry ("400x200+1000+600")
bt=Button(fen, text='choix', command= choix); bt.pack()
f=0
lt0=('Azerty', 'Defagu', 'Getidos')
lt1=('vytum', 'dgbclo', 'vbj45', 'dpoke')
lt2=(12345, 45678, 12.56, 0.45, -165.125)
lt3=('fvchux', 'hjbvd', 'fgjion')
lt4=('',)
 
##lt0=()
##lt1=()
##lt2=()
##lt3=()
##lt4=()
 
build_et_place_Lbx(fen)
build_et_place_Etq(fen)
 
li=Listes()
li.add_element(lt0, lists[0])
li.add_element(lt1, lists[1])
li.add_element(lt2, lists[2])
li.add_element(lt3, lists[3])
li.add_element(lt4, lists[4])
 
# Jaurai voulu écrire quelque chose comme ça :
#lists[0].bind("<<ListboxSelect>>", li.choix_element(lists[0])) # ne fonctionne pas ?
 
fen.mainloop() |