bonjour,

je voudrais creer avec Tkinter un tableau.
puis placer ce tableau dans une "frame".

mes contraintes sont les suivantes:
- la "frame" a une taille maximale. => si necessaire, "scrolling" du tableau dans la "frame".
- la taille des cases du tableaux s'adaptent a leur contenu (et a celui des cases de la meme ligne et colonne).
- le contenu d'une case est exclusivement du texte.
- le nombre de lignes et colonnes du tableau n'est pas vraiment limite.
- certaines cases peuvent s'etendre sur plusieurs colonnes et/ou lignes.
- possibilite de pouvoir centrer, justifier, ... le contenu d'une case dans cette meme case.
- possibilite de changer la couleur d'une case.
- possibilite d'avoir des separateurs de lignes, colonnes (traits), prennant en compte le fait que certaines cases sont un conglomerat de plusieurs cases et donc pas de trait a l'interieur.
- si possible j'aimerai ne pas avoir a ajouter de bibliotheques "non-standard".

comme il n'y a pas de "scrolledFrame" avec Tk.
j'ai cherche un peu et j'ai trouver dans Tix l'objet "scrolledWindow"
combine avec la methode de placement grid, j'arrive a quelque chose proche de ce que je veux.
cf: screenShot.
desole, je n'arrive pas a mettre le screenShot.
voici le code:

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
import Tix
import Tkinter as Tk
 
import Tix 
 
root = Tix.Tk()
## root.resizable(width=False, height=False)
## frameMain = Tk.Frame(root)
## frameMain.config(bg="green")
## frameMain.config(width=800, height=640)
## frameMain.pack()
 
## frameResult = Tix.ScrolledWindow(frameMain)
frameResult = Tix.ScrolledWindow(root)
frameResult.window.config(bg="white")
frameResult.window.config(width=400, height=320)
frameResult.pack()
## frameResult.place(relx=0.5, rely=0.05, anchor="n")
for i in range(50):
  font = ("Helvetica", 10)
  bd = 0
  rs, cs = None, None
  if (i == 0):
    font = ("Helvetica", 10+2, "bold")
    bd = 0
  for j in range(11):
    txt = "(%i,%i)"%(i,j)
    if (i == 0) and (j<3):
      ## rs = 2
      pass
    elif (i == 0) and (j==3):
      cs = 2
    elif (i == 0) and (j==4):
      continue
    elif (i == 0) and (j==5):
      cs = 2
    elif (i == 0) and (j==6):
      continue
    elif (i == 0) and (j==7):
      cs = 2
    elif (i == 0) and (j==8):
      continue
    elif (i == 0) and (j==9):
      cs = 2
    elif (i == 0) and (j==10):
      continue
    elif (i == 1) and (j<3):
      continue
    ## elif (i == 1):
      ## txt = "1"
    else:
      rs, cs = None, None
    f = Tk.Frame(frameResult.window)
    f.config(bg=f.master.cget("bg"))
    if (i>1) and (j%3 == 0):
      f.config(bg="red")
    b = Tk.Label(f)
    b.config(font=font)
    b.config(bd=bd)
    b.config(bg=b.master.cget("bg"))
    b.config(text=txt)
    ## b.pack(anchor="s")
    ## b.place(relx=0.5, rely=1, anchor="s")
    ## b.pack(side="top")
    b.pack(side="bottom")
    ## b.pack(fill="both", expand=True)
    f.grid(row=i, column=j, rowspan=rs, columnspan=cs)
 
root.mainloop()
mon premier probleme
, c'est que lorsque je place le "scrolledWindow" dans une "frame"
, je perd totalement le comportement de "scrolling".

voila, si quelqu'un a des idees, des solutions, ...

merci.