2017-10-17 11 views
-1

Voici mon code et ce que j'essaie exactement de faire est de mettre l'étiquette d'URL au milieu du cadre et le texte d'entrée à côté de lui, et d'ajouter 3 boutons sous l'URL et le champ de saisie .paramétrer les modules internes dans le cadre en utilisant tkinter

import tkinter as tk 
    from tkinter import * 
    root = tk.Tk() 


root.geometry("520x400") 

frame1 = tk.LabelFrame(root, text="my_first_window", width=400, height=200, bd=5) 
Label(root, text="URL:").grid(row=0, column=1 ,sticky=W) 

e1 = Entry(root) 
e1.grid(row=0, column=2) 
frame1.grid(row=0, column=0, columnspan=7, padx=8) 

Button(root, text='BACK', command=lambda:print('BACK')).grid(row=8, column=1, sticky=W, pady=4) 
Button(root, text='NEXT', command=lambda:print('NEXT')).grid(row=8, column=2, sticky=W, pady=4) 
Button(root, text='CANCLE', command=lambda:print('CANCLE')).grid(row=8, column=3, sticky=W, pady=4) 


mainloop() 
+0

Il n'y a pas de widgets 'Entry' ou de widgets' Button' dans votre code. Vous n'avez pas non plus posé de question dans votre ** question **. Que pouvons-nous faire pour vous aider ici? Vous devez être plus clair. –

+0

j'ai ajouté les boutons mais maintenant je veux que mon cadre soit placé au milieu de la fenêtre de tkinter et laisse également certain espace de la barre de menu et barre d'outils si ajouté @EthanField aussi j'ai édité mon code précédent au nouveau –

Répondre

0

Si vous insistez sur l'utilisation de la méthode .grid() vous pouvez ajouter le ci-dessous à votre code:

for column in range(10): 
    Grid.columnconfigure(root, column, weight=1) 

for row in range(10): 
    Grid.rowconfigure(root, row, weight=1) 

Cela signifie que de la grille de la colonne et la ligne de auront l'espace disponible dans la fenêtre donnée à eux également. L'utilisation de ceci en conjonction avec l'attribut sticky de .grid() vous permettra d'atteindre le résultat que vous recherchez.


Cependant, parler, il peut être plus facile pour vous subjectivement de passer à la méthode .pack(), qui (au moins à mon avis) permet de bien faciliter la configuration et la gestion des interfaces graphiques Tkinter.

Vous pouvez faire quelque chose comme ci-dessous:

from tkinter import * 

root = Tk() 

root.geometry("520x400") 

frame1 = LabelFrame(root, text="my_first_window", width=400, height=200, bd=5) 
Label(frame1, text="URL:").pack(side="left", fill="x") 

e1 = Entry(frame1) 
e1.pack(side="left", fill="x", expand=True) 
frame1.pack(fill="both", expand=True) 

Button(root, text='BACK', command=lambda:print('BACK')).pack(fill="both", expand=True, side="left", padx=5, pady=5) 
Button(root, text='NEXT', command=lambda:print('NEXT')).pack(fill="both", expand=True, side="left", padx=5, pady=5) 
Button(root, text='CANCLE', command=lambda:print('CANCLE')).pack(fill="both", expand=True, side="left", padx=5, pady=5) 

root.mainloop() 

Le fait ci-dessus l'utilisation d'un grand nombre de différentes idées nouvelles qui ont été posées et répondues trop de fois ici sur Stack Overflow donc je vais créer un lien à this fantastic answer from Bryan Oakley.

+0

merci tellement ça a vraiment marché pour ce que j'essayais de faire @Ethan Field –