No se puede entender la geometría de envase y de la red con tkinter

Pregunta hecha: hace 10 meses Ultima actividad: hace 10 meses
up 0 down

Hola yo no entiendo realmente cómo Furas hacen el trabajo código de abajo. ¿Por qué no llegar un mensaje de error acerca de la cuadrícula y el paquete de la misma raíz cuando añadió una caja? En la función addbox que establece un marco a la raíz que es Pack ya e incluso utiliza el paquete dentro de la función y luego utiliza la red.

Por favor alguien puede explicar a mí cómo esta "mágica" funciona?

un enlace a la su respuesta: La creación de nuevos cuadros de entrada con el botón Tkinter

    from Tkinter import *

#------------------------------------

def addBox():
    print "ADD"

    frame = Frame(root)
    frame.pack()

    Label(frame, text='From').grid(row=0, column=0)

    ent1 = Entry(frame)
    ent1.grid(row=1, column=0)

    Label(frame, text='To').grid(row=0, column=1)

    ent2 = Entry(frame)
    ent2.grid(row=1, column=1)

    all_entries.append( (ent1, ent2) )

#------------------------------------

def showEntries():

    for number, (ent1, ent2) in enumerate(all_entries):
        print number, ent1.get(), ent2.get()

#------------------------------------

all_entries = []

root = Tk()

showButton = Button(root, text='Show all text', command=showEntries)
showButton.pack()

Gracias

3 respuestas

Quizás tu proyecto necesite tarjetas de vector libre. Nuestro sitio tiene mapas para todos los países.

Publicación patrocinada

up 1 down

No hay magia, es sólo al funcionamiento previsto. Los usos de código pack en la ventana raíz, y los usos grid dentro de un marco. Cada widget que actúa como contenedor de otros controles puede utilizar cualquiera grid o pack. Simplemente no se puede utilizar tanto grid y pack juntos para los widgets que tienen el mismo maestro.

up 0 down

Creo que se pierda lo que el paquete y la rejilla en realidad son. Considere dicho código:

import tkinter as tk

root = tk.Tk()

myFrame = tk.Frame(root)

myFrame.pack()

myButton1 = tk.Button(myFrame, text='This is button 1')
myButton2 = tk.Button(myFrame, text='This is button 2')

myButton1.grid(row=0, column=0)
myButton2.grid(row=1, column=0)

root.mainloop()

Por crear root creamos una nueva ventana. En esta ventana vamos a poner todo lo demás. Entonces se crea myFrame. Tenga en cuenta, que la "cosa" real (en términos más adecuados - Widget) se crea en línea myFrame = tk.Frame(root). Tenga en cuenta, que tenemos que especificar el lugar donde vamos a poner este widget en paréntesis y hemos escrito que va a ser la raíz - nuestra principal ventana. Marco en blanco probablemente no es el mejor ejemplo, ya no se puede ver que está siendo colocado (no menos que utilice algunos más especificaciones por lo menos), pero aún así. Lo hemos creado, pero no lo puso en nuestra interfaz de usuario. El uso que le .pack() para colocarlo. Ahora se hace referencia a los widgets de ser utilizado como paquetes o rejillas. Eso no es cierto, sin embargo. Paquete y la rejilla son sólo el conjunto de reglas, sobre la que se colocan dentro de los widgets de algún tipo de ventana. Por eso, si quieres añadir algo más a la root en nuestro caso, tendrá que utilizar .pack() de nuevo. ¿Por qué? Si va a dar dos conjuntos de reglas sobre cómo colocar las cosas en la pantalla del ordenador - lo más probable conflicto entre sí. Sin embargo, si vamos a un nivel más abajo y ahora quieren colocar algo dentro de nuestra myFrame, Podemos volver a elegir qué conjunto de reglas para su uso. Esto se debe a que no importa, donde nuestro frame va a terminar en el interior root, Ahora sólo queremos especificar dónde nuestros botones 1 y 2 van a terminar en el interior del marco. Por lo tanto podemos utilizar de nuevo .pack() o cambiar a .grid().

Para concluir: .pack(), .grid() y .place() son un conjunto de reglas sobre cómo los widgets lugar dentro de otros widgets. En términos más generales, aunque se trata de normas sobre cómo colocar las cajas en otras cajas. Uno cajas en las que organizar otras cajas sólo puede tener un conjunto de reglas.

Espero que este ejemplo ayuda.

up 0 down

no es realmente una respuesta, pero creo que se verá favorecido por el enlace. tkinter y su diseño es de hecho un poco difícil de entender. Nunca entendí cómo tratar con él hasta que tropecé con esta presentación, que explica los detalles de diseño de una manera donde finalmente pude conseguir la caída de ella.

Sólo ponerlo ahí fuera para que otros puedan encontrar también. tkinter tutorial beazley