Hacer marcos en Tkinter contienen local de sistemas de red?

0

Pregunta

Pregunta muy simple que no puedo encontrar la respuesta de Intercambio de la Pila. (Sólo que esta engañosa hilo: Python3 Tkinter: redes Dentro de las Cuadrículas? Marcos Junto Con Otros Marcos? que lamentablemente no responde a la pregunta).

Estoy usando tkinter con Python para intentar un programa con una interfaz gráfica de usuario. Por desgracia, estoy totalmente de no entender el sistema de la red.

Yo estaba bajo la impresión de que cada marco contiene su propio sistema de cuadrícula, donde 0,0 es la esquina superior izquierda de dicho marco.

He creado este código:

root = Tk()

main_frame = Frame(root, width='1520', height='1080', bg='#a1a1a1').grid(row=0, column=1)
side_frame = Frame(root, width='400', height='1080', bg='#757575').grid(row=0, column=0)

header_label = Label(main_frame, text='Heading', font=('Agency', 48), bg='#a1a1a1', fg='#ffffff').grid(row=0, column=0)

Y espera que debido a que la etiqueta está en la posición (0,0) en el cuadro principal, que la etiqueta aparecerá en el cuadro principal. Sin embargo, no lo hizo. Me parece que un poco extraño y perturbador. Abajo hay una foto de lo que es en lugar sucediendo - la etiqueta del encabezado aparece en el 'side_frame'.

Defectuoso diseño de imagen

Podría alguien por favor me explique cómo el sistema de la red de obras? Yo no estaba muy a tener problemas hasta que he intentado añadir una barra de desplazamiento a la main_frame - me di cuenta de que hay algo de grave inadaptación incrustado dentro de tkinter y me gustaría entender correctamente a ella.

Gracias!

layout optimization python tkinter
2021-11-21 20:36:50
1

Mejor respuesta

1

El problema es que se está estableciendo main_frame y side_frame a None, por lo que pasa que como el padre de cualquier otro widget va a hacer que el widget de un niño de la raíz widget.

Eso es porque en python x=y().z() establece el valor de x a z(). Por lo tanto, cuando usted hace main_frame = Frame(...).grid(...) conjuntos de main_frame para el resultado de .grid(...)y grid siempre devuelve None.

Usted debe separar creación de widget de diseño widget, y esta es una de las razones por qué. La otra gran razón es que hace el código más fácil de leer y visualizar.

main_frame = Frame(root, width='1520', height='1080', bg='#a1a1a1')
side_frame = Frame(root, width='400', height='1080', bg='#757575')

main_frame.grid(row=0, column=1)
side_frame.grid(row=0, column=0)
2021-11-21 21:25:09

Gracias! No entiendo bien los detalles de cómo esto es diferente de la separación de ellos, pero definitivamente han resuelto mi problema. Ahora a esperar a la siguiente cuestión a surgir... :D
Jordan Regan

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................