Python [méthode .pack()]

Résolu/Fermé
Utilisateur anonyme - 11 mai 2006 à 10:48
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 11 mai 2006 à 17:17
Bonjour
Juste une petite question pratique.
J'utilise la méthode .pack() comme ceci :
group_iccap_var.pack(fill = 'both', expand = 1, side = 'right').
Or je voudrais que cette fenêtre soit non seulement à droite mais également en haut.
J'ai essayé " side = 'top right' ", mais il me dit qu'on ne peut lui passer comme argument que 'top, bottom, right ou left'.
On ne peut pas les associer?
Merci
A voir également:

7 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 mai 2006 à 11:08
.pack() ?

Je ne l'utilise pas.

Si je peux te donner un conseil: utilise exclusivement .grid()
Grid possède en plus les attributs sticky (NSEW) assez pratiques.


(Attention: ne jamais mélanger .pack() et .grid())
0
Utilisateur anonyme
11 mai 2006 à 11:21
Ah bon
J'avais trouvé des exemples avec Pmw où la méthode .pack() était utilisée.
Donc je vais essayer de résoudre monproblème avec la méthode .grid()
0
Utilisateur anonyme
11 mai 2006 à 14:52
Bon alors j'ai essayé de remplacer tous les .pack() par des .grid().
J'ai bien regardé tes codes sources pour ton logiciel webgobbler (notamment le fichier webgobbler_config.py).
J'ai essayé de m'en inspirer pour refaire mon interface graphique.
Le problème est que les différentes pagedu notebook m'enpêche de voir toutes mes informations.
En fait dans la première de mon notebook (notebook.page(0), j'ai 4 groupes (définis avec Pmw.Group). Un en haut à gauche, un en haut à droite, un en bas à gauche et un en bas à droite. Pour ça, j'ai utilisé :
column = 0, row = 1
column = 0, row = 2
column = 1, row = 1
column = 1, row = 2
Mais les groupes de droite viennent se superposer sur ceux de gauche, et les groupes du bas sont coupés car notebook.page(0) n'est pas assez grande.
Y'a quelque chose que j'oublie de faire?
Merci
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 mai 2006 à 15:10
Vérifie bien quel parent tu donne à chaque wiget que tu créé.
Parfois, en donnant le mauvais parent, il y a des superpositions.

En principe, tkinter s'arrange pour déterminer automatiquement la bonne taille de fenêtre en fonction de la taille de chaque widget.


Sinon là comme ça, je peux pas te dire ce qui ne va pas.
0
Utilisateur anonyme
11 mai 2006 à 16:08
Si tu pouvais jeter un oeil à mon code :
notebook = Pmw.NoteBook(self.root)
self._widgets['main_notebook'] = notebook
notebook.grid(column=0,row=0,sticky='NSWE')

## Add the "Appearance" page to the notebook ##
for name in ("Data", "Trace", "Exit") :
     page = notebook.add(name)

## Create the group menu ##
## Cell 1 - Input
group_input = Pmw.Group(notebook.page(0), tag_text='Input')
group_input.grid(column = 0, row = 1, columnspan = 2, sticky ='NSEW', padx = defaultPadding, pady = defaultPadding, ipadx = defaultPadding, ipady = defaultPadding)

## Cell 2 - Iccap Param
group_iccap = Pmw.Group(notebook.page(0), tag_text='Iccap Param')
group_iccap.grid(column = 1, row = 1, rowspan = 2, sticky ='NSEW', padx = defaultPadding, pady = defaultPadding, ipadx = defaultPadding, ipady = defaultPadding)


Rien que ça, je ne vois pas mes groupes entièrement.
Je distingue juste 'Ic' du 2ème groupe et rien du premier groupe.
Merci
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 mai 2006 à 16:23
C'est parceque tes groupes sont vides.
Chaque conteneur (groupe, frame, page...) s'adapte automatiquement à la taille de ce qu'on lui demande de contenir.

Il suffit donc de les remplir.
Exemple:
import Tkinter
import Pmw

class myApplication: 
    def __init__(self,root):
        self.root = root      
        self._widgets = {}
        self.initialisation()  

    def initialisation(self):     
        notebook = Pmw.NoteBook(self.root)
        self._widgets['main_notebook'] = notebook
        notebook.grid(column=0,row=0,sticky='NSWE')
        for name in ("Data", "Trace", "Exit") :
             page = notebook.add(name)
        
        group_input = Pmw.Group(notebook.page(0), tag_text='Input')
        group_input.grid(column = 0, row = 0,sticky ='NSEW')
        
        group_iccap = Pmw.Group(notebook.page(0), tag_text='Iccap Param')
        group_iccap.grid(column = 1, row = 0,sticky ='NSEW')

        Tkinter.Button(group_input.interior(),text="coucou1*************").grid(column=0,row=0)
        Tkinter.Button(group_iccap.interior(),text="coucou2**************").grid(column=0,row=0)
        
def main():
    root = Tkinter.Tk()
    root.title('My application')
    app = myApplication(root)
    root.mainloop()

if __name__ == "__main__":
    main()




Par contre, je ne comprend pas pourquoi tu fais un rowspan (je l'ai supprimé dans le code ci-dessus).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 mai 2006 à 16:24
(oups, dans mon exemple, remettre les deux Tkinter.Button(...) au même niveau que group_iccap.grid(...)
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 mai 2006 à 16:25
Le petit exemple donne ça:
https://imageshack.com/
0
Utilisateur anonyme
11 mai 2006 à 16:31
En effet dans le code que j'ai donné, je n'ajoutais aucune valeur. Mais dans mon vrai code, je le faisais.
En fait, j'ai supprimé columnspan et rowspan et ça a l'air de fonctionner.
Comme tu l'utilisais dans ton code, je l'avais mis aussi (ça m'apprendra à réfléchir un peu plus..)
Je finis mes tests et je posterai un message pour dire si ça marche.
Enocre merci
0
Utilisateur anonyme
11 mai 2006 à 16:54
Bon ça marche.
Les problèmes venaient des 'rowspan' et 'columnspan'.
Merci
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
11 mai 2006 à 17:17
Good.
0