Rechercher : dans
Par :

Python [méthode .pack()]

Dernière réponse le 11 mai 2006 à 17:17:31 oreilledelest, le 11 mai 2006 à 10:48:07 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Python [méthode .pack()] » dans :
Impossibilité d'installer le Service Pack 2 de Vista (Erreur) VoirVous essayez d'installer le Service Pack 2 (SP2) de Vista et vous rencontrez une erreur (0x80070057), voici la solution : Désinstallez les 3 mises à jour de sécurité suivantes : KB970653 KB972036 KB973874 Puis installez le Service Pack 2....
Votre première application graphique avec Python et Glade VoirCe guide vous aidera à créer pas à pas votre première application graphique. Nous allons utiliser le langage de programme Python et l'API graphique GTK, en utilisant le logiciel Glade pour créer facilement les interfaces graphiques. C'est de la...
Télécharger K-Lite Codec Pack Full VoirK-Lite Codec Pack est une collection de codecs et de filtres nécessaires pour encoder ou décoder des formats audio ou vidéo. K-Lite Codec Pack Full embarque l'ensemble des codecs et filtres nécessaires pour la plupart des formats audio et vidéo...
Méthodologie de gestion de projet VoirLa gestion de projet - La nécessité d'une méthodologie claire On appelle « gestion de projet » (éventuellement « conduite de projet ») l'organisation méthodologique mise en œuvre pour faire en sorte que l'ouvrage réalisé par le maître...
Sécurité - Méthodologie d'une intrusion sur un réseau VoirCet article a pour but d'expliquer la méthodologie généralement retenue par les pirates pour s'introduire dans un système informatique. Il ne vise pas à expliquer comment compromettre un système mais à comprendre la façon dont il peut l'être afin de...
Java: Les méthodes VoirLa notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...

1

sebsauvage, le 11 mai 2006 à 11:08:47

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

Répondre à sebsauvage

2

oreilledelest, le 11 mai 2006 à 11:21:40

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

Répondre à oreilledelest

3

oreilledelest, le 11 mai 2006 à 14:52:38

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

Répondre à oreilledelest

4

sebsauvage, le 11 mai 2006 à 15:10:18

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.

Répondre à sebsauvage

5

oreilledelest, le 11 mai 2006 à 16:08:28

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

Répondre à oreilledelest

6

sebsauvage, le 11 mai 2006 à 16:23:43

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).

Répondre à sebsauvage

7

sebsauvage, le 11 mai 2006 à 16:24:35

(oups, dans mon exemple, remettre les deux Tkinter.Button(...) au même niveau que group_iccap.grid(...)

Répondre à sebsauvage

8

sebsauvage, le 11 mai 2006 à 16:25:25
Répondre à sebsauvage

9

oreilledelest, le 11 mai 2006 à 16:31:33

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

Répondre à oreilledelest

10

oreilledelest, le 11 mai 2006 à 16:54:43

Bon ça marche.
Les problèmes venaient des 'rowspan' et 'columnspan'.
Merci

Répondre à oreilledelest

11

 sebsauvage, le 11 mai 2006 à 17:17:31

Good.

Répondre à sebsauvage
Collection CommentÇaMarche.net