Salut,

Je suis en train de faire une gestion de vieux disques Atari et je bloque sur la partie graphique. J'ai beaucoup de mal avec la doc de Tix qui n'a rien à voir avec la doc de Tkinter qui est beaucoup plus compréhensible. J'aimerai pouvoir faire une multiselection de fichiers. On en sélectionne un en cliquant dessus, puis les suivants avec un Ctrl-click. Ensuite un click droit sur n'importe lequel des fichiers sélectionnés ouvrirait un menu popup où l'on pourrait sélectionner l'action: Copier vers le presse papier, renommer, effacer etc... Quelqu'un aurait une vague idée? Je pensais procéder avec la méthode "bind", mais clairement la doc me décourage.

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
43
44
45
46
47
48
49
50
 
import Tix as tix
 
class TREE(object):
    def __init__(self, win, tree_data,sep=":"):
        self.win = win
        self.frm = tix.Frame(win)
        self.sep = sep
        tree = tix.Tree(win, browsecmd=self.selectItem, options='separator "%s"'%self.sep)
        tree.hlist.config(bg='white', selectbackground='white', selectforeground='black', selectmode="extended")
        tree.hlist.config(command=self.command)
        for dname, fnames in tree_data:
            disk_id = tree.hlist.add(dname, itemtype=tix.IMAGETEXT, image=tree.tk.call('tix', 'getimage', 'harddisk'), text=dname)
            tree.open(disk_id)
            for fname in fnames:
                try:
                    tree.hlist.add(dname + self.sep + fname, itemtype=tix.IMAGETEXT, image=tree.tk.call('tix', 'getimage', 'file'), text=fname)
                except Exception as (errmsg):
                    # Let's see that later
                    pass
        tree.pack()
        tree.autosetmode()
        tree.pack(expand=1, fill=tix.BOTH)
        self.frm.pack()
        self.tree = tree
 
    def selectItem(self, item):
        pass
        print "selectItem", item
 
    def command(self, item):
        print "command", item
 
if __name__ == '__main__':
 
    tree_data = [('../disks/filedisk/Files01a', ['DOS.SYS', 'BOULDERD.ASH', 'NMPINBAL.L', 'STARFIGH.TER', 'AUTORUN.SYS', 'CAMBODIA']),
        ('../disks/filedisk/Files01b', ['ABRACADA.BRA', 'PREMONTY', 'ALLEYCAT', 'PHARAON']),
        ('../disks/filedisk/FILES02A', ['DOS.SYS', 'FLYING', 'UNKNOWN.COM', 'SPYBACK', 'BLUEMAX.XL', 'AUTORUN.SYS']),
        ('../disks/filedisk/FILES02B', ['FINALLEG.ACY', 'DOS.SYS', 'SHUTTLE', 'SPYHUNTE.R', 'UPNDOWN', 'KONG']),
        ('../disks/filedisk/FILES03A', ['DOS.SYS', 'ZENJI', 'DROPZONE', 'RIVERRAI.D', 'DEFENDER', 'AUTORUN.SYS']),
        ('../disks/filedisk/FILES03A.ATR', ['ZENJI', 'DROPZONE', 'RIVERRAI.D', 'DEFENDER', 'AUTORUN.SYS']),
        ('../disks/filedisk/FILES03B', ['DOS.SYS', 'AUTORUN.SYS', 'GYRUSS', 'FUNWITHA.RTS', 'LOSANGEL.ES']),
        ('../disks/filedisk/FILES04A', ['DOS.SYS', 'NEWQBERT.COM', 'FLIPFLOP.COM', 'RAINBOW.COM', 'JUICE.COM', 'AUTORUN.SYS', 'HERO']),
        ('../disks/filedisk/FILES04B', ['DOS.SYS', 'AZTEC', 'SHOWDOWN', 'SHAMUS2', 'AUTORUN.SYS']),
        ('../disks/filedisk/FILES07A', ['DOS.SYS', 'GHOSTCHA.SER', 'ARCHON.II', 'HARDHATM.AC', 'HIGHRISE'])]
 
    win = tix.Tk()
    tree = TREE(win, tree_data)
    win.geometry("260x400")
    win.mainloop()