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 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() |
Partager