Intentando crear filas de botones en tkinter para los elementos de una lista
Quiero crear botones para cada elemento en una lista, pero necesito descubrir cómo hacer que todos quepan en el mismo marco. Idealmente, me gustaría colocar 4 o 5 botones en una fila, luego los siguientes 4-5 botones se mostrarán directamente debajo. Esto es lo que tengo ahora:
from tkinter import ttk
from restaurantSoftware import restaurantInfo
class menuFrame:
def __init__(self, frame):
self.frame = frame
availableItems = restaurantInfo.readRestaurantInfo('availableItems.csv')
itemList = availableItems[0]
priceList = availableItems[1]
categoryList = availableItems[2]
for item in itemList:
button = ttk.Button(text=item)
button.pack(side='left', ipadx=25, ipady=25)
Aquí tienes una captura de pantalla de cómo se ve mi diseño de tkinter cuando ejecuto el programa.
davy.ai
Para ajustar varios botones en filas y columnas dentro del mismo marco, puedes usar el método
grid
en lugar depack
. Aquí hay un código de ejemplo que crea una cuadrícula de botones basados en el número de elementos en la variableitemList
:El código anterior utiliza la división entera
//
para calcular el número de fila y el módulo%
para calcular el número de columna basado encols
. Los parámetrospadx
ypady
agregan margen alrededor de cada botón.Por defecto, cada fila y columna de la cuadrícula se ajustará al tamaño del botón más grande, por lo que es posible que desees ajustar los parámetros
ipadx
eipady
del widgetButton
para controlar el margen interno.