Je suis sous windows 10 avec Python 3.2.
Pensez-vous que le problème puisse venir de cette différence ?
Je suis sous windows 10 avec Python 3.2.
Pensez-vous que le problème puisse venir de cette différence ?
EduPython n'est qu'en 3.2 malheureusement...En tous cas, vous pourriez tester facilement avec 3.4 ou 3.5.
Est-ce normal donc, si même avec l'utilisation de grid, la fenêtre n'est pas identique à ce qu'elle devrait être ?
Normal ou pas, il va falloir faire avec...
L'autre soucis (que vous avez où plutôt pratique que j'évite car trop prise de chou) est de trop forcer les contraintes côté dimensions des fenêtres. Des tailles minimales sont acceptables (histoire que l'utilisateur sache où elle est passée), mais il faut rester raisonnable, d'une part parce que vous n'allez pas tout recalculer si vous voulez changer une de ces dimensions et d'autre part parce que vous empêcher .pack et .grid de faire le boulot à votre place.
- W
Il n'y a pas de solution ?Normal ou pas, il va falloir faire avec...
Les contraintes, c'est à dire le fait de définir la taille de la fenêtre ou d'empêcher de modifier sa taille ?L'autre soucis (que vous avez où plutôt pratique que j'évite car trop prise de chou) est de trop forcer les contraintes côté dimensions des fenêtres. Des tailles minimales sont acceptables (histoire que l'utilisateur sache où elle est passée), mais il faut rester raisonnable.
Il est en effet possible que me problème vienne de là. Mais si je ne définis pas une taille en particulier pour la fenêtre, comment faire en sorte qu'elle soit à la bonne taille (c'est à dire ni trop grande en laissant de l'espace vide, ni trop petite pour masquer les widgets) ?
Vous fixez éventuellement les dimensions de certaines fenêtres d'une colonne ou d'une ligne.
note: lorsque vous avez un Label ou un Button, la taille sera déjà donnée par les caractères et la taille de la police.
Et vous laissez .pack ou .grid donner la place restante à une des fenêtres.
- W
Avec fill par exemple ?Et vous laissez .pack ou .grid donner la place restante à une des fenêtres.
Je pense que le problème viens du fait que définir une taille en pixel pose problème sur un autre ordi avec une autre résolution. D'ailleurs, quelle est votre résolution ?
Il faut donc que je ne donne pas de taille particulière, mais que je laisse le widget prendre la place qu'il reste. Comment faire ? Ça doit se faire dans le .grid ou quand on crée le widget ?
Heuuu, non ?Côté widget vous savez faire
Comment dois-je les utiliser ?vous avez les .{column|row}configure(index, minsize=...).
Si minsize permet de donner une taille minimale du widget, alors ce n'est pas ce que je veux. Ce que je cherche, c'est à faire en sorte que la fenêtre ait la même interface sur n'importe quel ordinateur avec n'importe quelle résolution.
La même interface, c'est une question de look&feel, histoire que l'utilisateur retrouve ses widgets (à peu près) aux mêmes endroits. Et dans ce cas, vous n'êtes pas au pixel près...
minsize permet d'avoir une taille minimale pour la cellule (de la grille) dans laquelle on va placer le widget. Vous pouvez "bloquer" avec weight=0.
Prenez le temps de lire la documentation et de voir ce que çà donne sur de petits exemples.
- W
Mon but ne serait pas de maximiser la taille de la fenêtre plutôt ?minsize permet d'avoir une taille minimale pour la cellule (de la grille) dans laquelle on va placer le widget.
Puisque visiblement il ne faut pas que je détermine une taille précise, je cherche plutôt à faire en sorte que la taille du widget remplisse automatiquement la taille maximale ?
Je parlais de fill précédemment, n'est-ce pas la bonne solution ?
Le problème, c'est que je ne pense pas pouvoir faire une mise en forme comme ça avec pack.
Avec .grid vous pouvez répartir l'emplacement disponible de façon proportionnelle.
Exemple:
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 import tkinter as tk root = tk.Tk() root.minsize(300, 220) root.columnconfigure(0, minsize=100, weight=1) root.columnconfigure(1, minsize=200, weight=3) root.rowconfigure(0, minsize=200, weight=1) root.rowconfigure(1, minsize=20, weight=0) f1 = tk.Frame(bg='red') f2 = tk.Frame(bg='blue') f3 = tk.Frame(bg='grey50') f1.grid(row=0, column=0, sticky='nwse', rowspan=2) f2.grid(row=1, column=1, sticky='nwse') f3.grid(row=0, column=1, sticky='nwse') tk.mainloop()
- W
Effectivement, c'est ce que je cherchais à faire !
Je n'avais pas compris l'utilisation de weight.
Merci beaucoup pour votre aide !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager