Tkinter : problème positionnement labels et champs de saisie

Fermé
Alpha_Delta091 Messages postés 3 Date d'inscription mardi 17 décembre 2013 Statut Membre Dernière intervention 19 juillet 2017 - Modifié le 16 juil. 2017 à 19:04
Alpha_Delta091 Messages postés 3 Date d'inscription mardi 17 décembre 2013 Statut Membre Dernière intervention 19 juillet 2017 - 19 juil. 2017 à 01:17
Bonjour,

J'ai commencé récemment à coder une petite application en Python. Pour le moment j'en suis à l'écran d'accueil et j'utilise Tkinter pour l'interface graphique. J'ai créé une fenêtre TopLevel (qui se superpose sur une autre juste derrière) qui demande à l'utilisateur de rentrer un username et un mot de passe (identifiants uniques pour le moment). L'algorithme fonctionne très bien.

Le problème est, vous pourrez le constater sur le screen ci-joint, un souci d'alignement des deux labels par rapport aux champs de saisie. J'ai beau bidouiller les paramètres side et anchor, rien n'y fait, je n'arrive pas à superposer les deux labels correctement mais surtout à les aligner avec les champs de saisie qui leurs correspondent.

Sauriez-vous comment faire ? Ais-je fait une erreur quelque part ?

Bien cordialement



PS : L'intégralité du code ci-dessous
from tkinter import *
import os
from tkinter.messagebox import * # boîte de login
from PIL import Image

Fen = Tk()

Fen.attributes("-fullscreen", 1) #fenetre principale en plein écran

fen2 = Toplevel(Fen)
Fen.title('Topnote, logiciel de saisie de livret scolaire')
fen2.wm_attributes('-topmost', 1)              #fenetre premier plan (pour login) et centrage de la principale
Fen.eval('tk::PlaceWindow %s center' % Fen.winfo_pathname(Fen.winfo_id()))


image = PhotoImage(file='fond.gif')
canvas = Canvas(Fen, width=1, height=1)
canvas.pack(fill=BOTH, expand=True)
canvas.create_image(670, 400, image=image, anchor=CENTER)




def center_window(width=100, height=20):
    # get screen width and height
    screen_width = fen2.winfo_screenwidth()
    screen_height = fen2.winfo_screenheight()

    # calculate position x and y coordinates
    x = (screen_width/2) - (width/2)
    y = (screen_height/1.2) - (height/1.2)
    fen2.geometry('%dx%d+%d+%d' % (width, height, x, y))


center_window(280, 100)




def Verification():
    if Motdepasse.get() == 'python27'and Utilisateur.get() == 'superdev':
        # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
        showinfo('Résultat','Connexion réussie !\nAu revoir !')
        fen2.destroy()
        
    else:
        # le mot de passe est incorrect : on affiche une boîte de dialogue
        showwarning('Résultat','Mot de passe et/ou identifiant incorrect(s).\nVeuillez recommencer !')
        Motdepasse.set('')
        Utilisateur.set('')


# Création de la fenêtre de login
fen2.title('Identification requise')


# Création des widgets Labels : Nom d'utilisateur et mot de passe

Label_1 = Label(fen2, text = "Nom d'utilisateur :")
Label_1.pack(side = TOP, anchor=W, padx = 0, pady = 1)
Label2 = Label(fen2, text = 'Mot de passe : ')
Label2.pack(side = LEFT,anchor=CENTER, padx = 0, pady = 1)

Utilisateur= StringVar()
Champ = Entry(fen2, textvariable= Utilisateur, show='', bg ='bisque', fg='maroon')
Champ.focus_set()
Champ.pack(side = TOP, anchor=CENTER, padx = 0, pady =0)


Motdepasse= StringVar()
Champ = Entry(fen2, textvariable= Motdepasse, show='*', bg ='bisque', fg='maroon')
Champ.focus_set()
Champ.pack(side = TOP, anchor=CENTER, padx = 0, pady = 2)

# Création d'un widget Button (bouton Valider)
Bouton = Button(fen2, text ='Valider', command = Verification)
Bouton.pack(side = BOTTOM, anchor=CENTER, padx = 0, pady = 0)


fen2.mainloop()
Fen.mainloop()


PS2: Voici ce qu'on obtient, comme vous voyez l'alignement est pas top :/


A voir également:

1 réponse

Alpha_Delta091 Messages postés 3 Date d'inscription mardi 17 décembre 2013 Statut Membre Dernière intervention 19 juillet 2017
19 juil. 2017 à 01:17
Up
0