Je suis en train d'écrire une interface graphique pour mon script en
python 3 qui trace des spectres lumineux.
J'ai mis tous les widgets dans des frames.
J'ai deux problèmes
1) j'ai onze checkbox qui permettent de sélectionner les éléments
chimiques (3 rows de 4 colonnes) mais la première colonne qui contient
des éléments chimiques au nom un peu long est un peu plus large que les
trois autres malgré un column.configure()
2) j'aurais voulu que le bouton "Quitter" soit complètement à gauche et
le bouton "Dessiner le spectre" soit complètement à droite mais mon
anchor='w' pour le premier et anchor='e' pour le second sont sans effet.
Merci de vos avis
PS : si un (ou des) prof(s) de physique/chimie traînent par ici, je peux
fournir le lien où télécharger mon code (quand l'interface graphique
sera terminée)
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from tkinter import *
from tkinter import font
import math
var_Hydrogene = StringVar()
case = Checkbutton(cadre_choix_elements, bg=ze_bg, fg=ze_fg, activebackground=ze_abg, text="Hydrogène", anchor='w', variable=var_Hydrogene, font=ze_font)
# var_Hydrogene.get()
# Si la case est cochée, la valeur renvoyée par la variable sera 1. Si elle n'est pas cochée, ce sera0.
case.grid( row=1, column=0, sticky=ze_sticky)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Lulu
Le 17-03-2020, Lulu a écrit :
Salut, Je suis en train d'écrire une interface graphique pour mon script en python 3 qui trace des spectres lumineux. J'ai mis tous les widgets dans des frames. J'ai deux problèmes 1) j'ai onze checkbox qui permettent de sélectionner les éléments chimiques (3 rows de 4 colonnes) mais la première colonne qui contient des éléments chimiques au nom un peu long est un peu plus large que les trois autres malgré un column.configure()
Pas trouvé de solution pour ce point...
2) j'aurais voulu que le bouton "Quitter" soit complètement à gauche et le bouton "Dessiner le spectre" soit complètement à droite mais mon anchor='w' pour le premier et anchor='e' pour le second sont sans effet.
J'ai trouvé la solution au point 2)
cadre_choix_elements.grid( row=4, column=0, padx, pady=5, ipadx, sticky='ew') [...] # frame pour les boutons 'Quitter' et 'Dessiner le spectre' cadre_boutons = Frame( fenetre, bg=ze_bg, relief=ze_relief, bd=ze_bd) cadre_boutons.grid( row=6, padx, pady=5, ipadx, sticky='ew')
Il manquait column=0 cadre_boutons.grid( row=6, column = 0, padx, pady=5, ipadx, sticky='ew') Il manquait aussi : cadre_boutons.columnconfigure(0, weight=1) cadre_boutons.columnconfigure(1, weight=1) cadre_boutons.columnconfigure(2, weight=1) cadre_boutons.columnconfigure(3, weight=1)
J'ai changé le sticky='ew' par sticky='w' button.grid( row=0, column=0, padx, pady, sticky='w') J'avais rajouté un frame pour écrire mon nom et ma licence entre les boutons "Quitter" et "Dessiner le spectre" : cadre_notice = tk.Frame( cadre_boutons, bg=ze_bg, relier='flat', bd=ze_bd) cadre_notice.grid( row=0, column=1, columnspan=2, sticky='ew') ze_font = font.Font(family='Helvetica', size='9') label = tk.label( cadre_notice, bg=ze_bg, fg=ze_fg, text = "Auteur : XXXXXX, ", font=ze_font) label.grid( row=0, column=0, columnspan=2, sticky='ew') label = tk.Label( cadre_notice, bg=ze_bg, fg=ze_fg, text = "licence CC-BY-NC-SA : attribution, non-commercial, share alike", font=ze_font) label.grid( row=1, column=0, columnsân=2, sticky='ew') ze_font = font.FOnt(family='Helvetica', size='12')
button = Button( cadre_boutons, text = "Dessiner le spectre", bg=ze_bg, fg=ze_fg, activebackground=ze_abg, command = callback, font=ze_font, anchor='e')
rien de changé ici, sauf l'appel à Button qui devient tk.Button car je suis passé de "from tkinter import *" à "import tkinter as tk" button = tk.Button( cadre_boutons, text = "Dessiner le spectre", bg=ze_bg, fg=ze_fg, activebackground=ze_abg, command = callback, font=ze_font, anchor='e')
Par contre, de manière inexplicable, j'avais laissé trainer un sticky='ew'. En remplaçant par sticky='e', j'obtiens ce que je voulais. Conclusion, il fallait... - indiquer "column=0" dans cadre_boutons.grid() - préciser "cadre_boutons.columnconfigure(0, weight=1)" pour chacune des quatres column du cadre. - préciser sticky='e' plutôt que sticky='ew' sur le bouton de droite.
Le 17-03-2020, Lulu <lulu042@fry.fr.invalid> a écrit :
Salut,
Je suis en train d'écrire une interface graphique pour mon script en
python 3 qui trace des spectres lumineux.
J'ai mis tous les widgets dans des frames.
J'ai deux problèmes
1) j'ai onze checkbox qui permettent de sélectionner les éléments
chimiques (3 rows de 4 colonnes) mais la première colonne qui contient
des éléments chimiques au nom un peu long est un peu plus large que les
trois autres malgré un column.configure()
Pas trouvé de solution pour ce point...
2) j'aurais voulu que le bouton "Quitter" soit complètement à gauche et
le bouton "Dessiner le spectre" soit complètement à droite mais mon
anchor='w' pour le premier et anchor='e' pour le second sont sans effet.
Par contre, de manière inexplicable, j'avais laissé trainer un sticky='ew'. En remplaçant par
sticky='e', j'obtiens ce que je voulais.
Conclusion, il fallait...
- indiquer "column=0" dans cadre_boutons.grid()
- préciser "cadre_boutons.columnconfigure(0, weight=1)" pour chacune des
quatres column du cadre.
- préciser sticky='e' plutôt que sticky='ew' sur le bouton de droite.
Salut, Je suis en train d'écrire une interface graphique pour mon script en python 3 qui trace des spectres lumineux. J'ai mis tous les widgets dans des frames. J'ai deux problèmes 1) j'ai onze checkbox qui permettent de sélectionner les éléments chimiques (3 rows de 4 colonnes) mais la première colonne qui contient des éléments chimiques au nom un peu long est un peu plus large que les trois autres malgré un column.configure()
Pas trouvé de solution pour ce point...
2) j'aurais voulu que le bouton "Quitter" soit complètement à gauche et le bouton "Dessiner le spectre" soit complètement à droite mais mon anchor='w' pour le premier et anchor='e' pour le second sont sans effet.
J'ai trouvé la solution au point 2)
cadre_choix_elements.grid( row=4, column=0, padx, pady=5, ipadx, sticky='ew') [...] # frame pour les boutons 'Quitter' et 'Dessiner le spectre' cadre_boutons = Frame( fenetre, bg=ze_bg, relief=ze_relief, bd=ze_bd) cadre_boutons.grid( row=6, padx, pady=5, ipadx, sticky='ew')
Il manquait column=0 cadre_boutons.grid( row=6, column = 0, padx, pady=5, ipadx, sticky='ew') Il manquait aussi : cadre_boutons.columnconfigure(0, weight=1) cadre_boutons.columnconfigure(1, weight=1) cadre_boutons.columnconfigure(2, weight=1) cadre_boutons.columnconfigure(3, weight=1)
J'ai changé le sticky='ew' par sticky='w' button.grid( row=0, column=0, padx, pady, sticky='w') J'avais rajouté un frame pour écrire mon nom et ma licence entre les boutons "Quitter" et "Dessiner le spectre" : cadre_notice = tk.Frame( cadre_boutons, bg=ze_bg, relier='flat', bd=ze_bd) cadre_notice.grid( row=0, column=1, columnspan=2, sticky='ew') ze_font = font.Font(family='Helvetica', size='9') label = tk.label( cadre_notice, bg=ze_bg, fg=ze_fg, text = "Auteur : XXXXXX, ", font=ze_font) label.grid( row=0, column=0, columnspan=2, sticky='ew') label = tk.Label( cadre_notice, bg=ze_bg, fg=ze_fg, text = "licence CC-BY-NC-SA : attribution, non-commercial, share alike", font=ze_font) label.grid( row=1, column=0, columnsân=2, sticky='ew') ze_font = font.FOnt(family='Helvetica', size='12')
button = Button( cadre_boutons, text = "Dessiner le spectre", bg=ze_bg, fg=ze_fg, activebackground=ze_abg, command = callback, font=ze_font, anchor='e')
rien de changé ici, sauf l'appel à Button qui devient tk.Button car je suis passé de "from tkinter import *" à "import tkinter as tk" button = tk.Button( cadre_boutons, text = "Dessiner le spectre", bg=ze_bg, fg=ze_fg, activebackground=ze_abg, command = callback, font=ze_font, anchor='e')
Par contre, de manière inexplicable, j'avais laissé trainer un sticky='ew'. En remplaçant par sticky='e', j'obtiens ce que je voulais. Conclusion, il fallait... - indiquer "column=0" dans cadre_boutons.grid() - préciser "cadre_boutons.columnconfigure(0, weight=1)" pour chacune des quatres column du cadre. - préciser sticky='e' plutôt que sticky='ew' sur le bouton de droite.