es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo posicionar un LabelFrame que incluye un botón y está dentro de un Frame – Usando tkinter en Python.

He estado intentando posicionar mi LabelFrame que está dentro de un Frame e incluye 2 botones. Quiero colocarlo en la esquina inferior derecha de la pantalla… Pensé en usar ancho/alto/x/y, pero eso solo se aplicaría a la pantalla actual en la que estoy trabajando. Así que terminé utilizando .grid y place(), pero como soy nuevo en tkinter no sé cómo usarlos… He buscado en todos lados y, para ser honesto, no me ha ayudado en absoluto, así que a continuación encontrarás una foto de lo que quiero que parezca y mi código de lo que he escrito hasta ahora que no me llevó a ninguna parte ↓

Diseño: https://i.stack.imgur.com/IpJQJ.png

CÓDIGO


# creando los frames ↓ upFrame = Frame(window, bg='blue') upFrame.grid(row=1, column=0, sticky='n') midFrame = Frame(window, bg='red') midFrame.grid(row=2, column=0, sticky='nesw') bottomFrame = Frame(window, bg='yellow') bottomFrame.grid(row=3, column=0, sticky='s') window.grid_rowconfigure(0, weight=1) window.grid_columnconfigure(0, weight=1) window.grid_rowconfigure(1, weight=1,) # Creando el label time label_time = LabelFrame(bottomFrame, pady=0, padx=5, bg='lightgray') label_time.pack(anchor='se') # Creando los botones btn1 = Button(label_time, text="Click Me", pady=10, height="1", width="20") btn1.pack(side=LEFT) btn2 = Button(label_time, text="Or Me...", pady=10, height="1", width="20") btn2.pack(side=RIGHT)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para posicionar el LabelFrame en la esquina inferior derecha de la pantalla, puedes usar el método place en lugar de pack o grid. Aquí tienes un ejemplo basado en tu código:

    # Creación de los frames ↓
    upFrame = Frame(window, bg='blue')
    upFrame.grid(row=1, column=0, sticky='n')
    midFrame = Frame(window, bg='red')
    midFrame.grid(row=2, column=0, sticky='nesw')
    bottomFrame = Frame(window, bg='yellow')
    bottomFrame.grid(row=3, column=0, sticky='s')
    
    # Hacer que bottomFrame ocupe la parte inferior de la ventana
    window.grid_rowconfigure(3, weight=1)
    window.grid_columnconfigure(0, weight=1)
    
    # Creación del label time y posicionamiento en la esquina inferior derecha
    label_time = LabelFrame(bottomFrame, pady=0, padx=5, bg='lightgray')
    label_time.place(relx=1.0, rely=1.0, anchor='se')
    
    # Creación de los botones
    btn1 = Button(label_time, text="Haz clic", pady=10, height=1, width=20)
    btn1.pack(side=LEFT)
    
    btn2 = Button(label_time, text="O yo...", pady=10, height=1, width=20)
    btn2.pack(side=RIGHT)
    

    Aquí, se utiliza el método place para posicionar el LabelFrame en las coordenadas relx=1.0, rely=1.0, que corresponden a la esquina inferior derecha de su widget padre (bottomFrame). El parámetro anchor se establece en 'se' para indicar que esta posición corresponde a la esquina sureste del LabelFrame.

    Ten en cuenta que el método place utiliza coordenadas relativas proporcionales al tamaño del widget padre, por lo que la posición del LabelFrame se ajustará automáticamente si cambia el tamaño del widget padre (por ejemplo, si se redimensiona la ventana).

Comments are closed.