importtkinterastkfromtkinterimportfontastk_fontimportjsonSCROLL_WIDTH=18LISTBOX_HEIGHT=12defplayers_load(path):withopen(path)asf:returnjson.load(f)defplayer_select(list_box):i=list_box.curselection()ifnoti:returnvalue=list_box.get(i)ifplayers_selected[notlist_box.id]==value:returnplayers_selected[list_box.id]=valueplayers_label.config(text=f'{players_selected[0]} - {players_selected[1]}')players_selected={0:'',1:'',}players=dict(sorted(players_load('joueurs.json').items()))list_box_width=max(len(p)forpinplayers)+2window=tk.Tk()font=tk_font.Font(family='mono',size=18)frame_box=tk.Frame(window,bg='#000')frame_box.grid()left_scroll=tk.Scrollbar(frame_box,orient=tk.VERTICAL,width=SCROLL_WIDTH,)left_scroll.grid(row=0,column=0,sticky=tk.NSEW,)left_list=tk.Listbox(frame_box,font=font,width=list_box_width,height=LISTBOX_HEIGHT,xscrollcommand=left_scroll.set,yscrollcommand=left_scroll.set,)left_list.grid(row=0,column=1,padx=(10,5),)left_scroll.config(command=left_list.yview)left_list.id=0# C'est crade !right_scroll=tk.Scrollbar(frame_box,orient=tk.VERTICAL,width=SCROLL_WIDTH,)right_scroll.grid(row=0,column=3,sticky=tk.NSEW,)right_list=tk.Listbox(frame_box,font=font,width=list_box_width,height=LISTBOX_HEIGHT,xscrollcommand=right_scroll.set,yscrollcommand=right_scroll.set,)right_list.grid(row=0,column=2,padx=(5,10),)right_scroll.config(command=right_list.yview)right_list.id=1# C'est crado !players_label=tk.Label(frame_box,height=3,font=font,bg='#000',fg='#fff',)players_label.grid(row=1,column=0,columnspan=4,)left_list.insert(0,*players)right_list.insert(0,*players)left_list.bind('<<ListboxSelect>>',lambdae:player_select(left_list))right_list.bind('<<ListboxSelect>>',lambdae:player_select(right_list))window.mainloop()
Y a des trucs un peu moches, notamment d'insérer des attributs id aux listbox (permettant de savoir si la sélection courante n'est pas la même que celle de l'autre listbox), il serait préférable de créer une classe dérivée de Listbox et y intégrer un id via un attribut de classe.
[^] # Avec deux listbox
Posté par gled . En réponse au message Tkinter et scrollbar. Évalué à 1.
Un autre code fait à l'arrache =D
Y a des trucs un peu moches, notamment d'insérer des attributs id aux listbox (permettant de savoir si la sélection courante n'est pas la même que celle de l'autre listbox), il serait préférable de créer une classe dérivée de Listbox et y intégrer un id via un attribut de classe.