J'ai donc créé un cadre dans lequel je veux mettre deux widgets avec eux centrés sur l'axe des x. Quand c'est un pack d'objets () le centre automatiquement. Mais je ne peux pas comprendre deux widgets. J'ai essayé avec grid () mais il y a un espace libre à gauche, ce qui le rend asymétrique comme on le voit dans l'image. entrez la description de l'image ici

Comment pourrais-je obtenir ce que l'on voit à droite? (Je préférerais que ce ne soit pas avec pack () mais s'il y a une solution avec grid () et / ou place () aussi j'apprécierais celles-ci aussi!)

Voici le code de l'image de gauche

from tkinter import *
from tkinter import font

root = Tk()
root.geometry("500x500")

frame = Frame(root, bg="white", highlightbackground="black", highlightthickness=2)
frame.place(relwidth=0.5, relheight=0.5, relx=0.5, rely=0.5, anchor=CENTER)

label = Label(frame, bg="lime", text="label", font=font.Font(size=20))
label.grid(column=0, row=0)

button = Button(frame, bg="yellow", text="pressbutton", font=font.Font(size=20))
button.grid(column=1, row=0)

root.mainloop()
1
Enrique Metner 30 oct. 2020 à 00:30

2 réponses

Meilleure réponse

Vous pouvez utiliser frame.pack() pour positionner facilement le cadre en haut, au milieu de son parent.

enter image description here

from tkinter import *
from tkinter import font

root = Tk()
root.geometry("500x500")

frame = Frame(root, bg="white", highlightbackground="black", highlightthickness=2)
frame.pack()

label = Label(frame, bg="lime", text="label", font=font.Font(size=20))
label.grid(column=0, row=0)

button = Button(frame, bg="yellow", text="pressbutton", font=font.Font(size=20))
button.grid(column=1, row=0)

root.mainloop()
2
Reblochon Masque 29 oct. 2020 à 21:45

Vous pouvez placer le libellé et le bouton dans un autre cadre et utiliser pack() sur ce cadre:

from tkinter import *
from tkinter import font

root = Tk()
root.geometry("500x500")

frame = Frame(root, bg="white", highlightbackground="black", highlightthickness=2)
frame.place(relwidth=0.5, relheight=0.5, relx=0.5, rely=0.5, anchor=CENTER)

frame2 = Frame(frame)
frame2.pack() # default side='top'

label = Label(frame2, bg="lime", text="label", font=font.Font(size=20))
label.pack(side='left', fill='both')

button = Button(frame2, bg="yellow", text="pressbutton", font=font.Font(size=20))
button.pack(side='left')

root.mainloop()
1
acw1668 30 oct. 2020 à 01:18