Introducción al diseño de la interfaz GUI de Tkinter

Introducción al diseño de la interfaz GUI de Tkinter

Para conocer los conceptos básicos de la ventana Tkinter de Python, consulte https://blog.csdn.net/cnds123/article/details/127227651

Tkinter en sí mismo no proporciona una forma de arrastrar y soltar controles para crear una interfaz GUI, pero proporciona tres métodos de administración de geometría: paquete, cuadrícula y lugar, cada uno de los cuales tiene sus propias ventajas y escenarios aplicables. Elija el método de diseño más adecuado.

El administrador de geometría de Tkinter (administrador de geometría), también llamado diseño (layout), se utiliza para controlar la composición tipográfica y el diseño de los widgets (Widgets) en el formulario.

Un widget (Widget) también se conoce como componente (componente) o control (control), estos términos se usan indistintamente y se denomina Widget en la documentación oficial de Tkinter. Ambos se refieren a elementos visuales en la interfaz de usuario. En Tkinter, algunos widgets comunes son los siguientes:

Etiqueta: se utiliza para mostrar texto o imágenes.

Botón (botón): se utiliza para desencadenar un evento de respuesta o realizar una acción.

Entrada (cuadro de entrada): se utiliza para recibir una sola línea de entrada de texto del usuario.

Texto (cuadro de texto): se utiliza para recibir y mostrar entradas de texto de varias líneas.

Botón de verificación (check box): se utiliza para seleccionar una o más opciones.

Radiobutton (botón de radio): Se utiliza para seleccionar una de múltiples opciones.

Listbox (cuadro de lista): se utiliza para mostrar una lista o seleccionar elementos de la lista.

Combobox (cuadro combinado): Combina las funciones de un cuadro de texto y una lista desplegable.

Frame (marco): sirve para crear un contenedor que puede contener otros Widgets.

Lienzo: se utiliza para dibujar gráficos, imágenes y elementos de interfaz personalizados.

Barra de desplazamiento: se utiliza para implementar el desplazamiento en áreas de contenido grandes.

etc.

El formato de sintaxis general de varios widgets (Widget) en Tkinter es el siguiente:

widget = WidgetClass(padre, opciones)

Entre ellos, WidgetClass es el nombre de la clase de control, parent es el objeto de la ventana principal, options son las opciones y propiedades del control, que pueden ser uno o más parámetros. Estos son algunos selectores y atributos de uso común:

text: Muestra el texto del control.

ancho y alto: Ancho y alto del control en píxeles.

bg y fg: el color de fondo y el color de primer plano del control.

fuente: La configuración de fuente del control.

comando: La función que se ejecuta después de hacer clic en el botón de control.

variable: las variables de estado de los controles, como los cuadros de selección múltiple y los cuadros de radio.

value: El valor del control.

imagen: el objeto de imagen del control de imagen.

Las anteriores son algunas opciones y propiedades de control de uso común, y diferentes controles tienen otros selectores y propiedades diferentes.

Por ejemplo:

Etiqueta: etiqueta = Etiqueta (raíz, texto = "¡Hola, mundo!")

Botón: botón = Botón (raíz, texto = "¡Haz clic en mí!", Comando = devolución de llamada)

Entrada: entrada = Entrada (raíz, ancho = 10)

Texto: texto = Texto (raíz, alto = 5, ancho = 30)

Lienzo: lienzo = Lienzo (raíz, ancho = 300, alto = 200)

Cuadro de lista: cuadro de lista = cuadro de lista (raíz)

Botón de verificación: botón de verificación = Botón de verificación (raíz, texto = "¡Revisame!")

Radiobutton: radiobutton = Radiobutton(raíz, texto="Opción 1", valor=1)

Escala: escala = Escala(raíz, desde_=0, hasta=100, orientación=HORIZONTAL)

Donde root es el objeto de la ventana principal, y estos formatos de sintaxis también se denominan constructores (Constructor), que se utilizan para crear instancias de varios widgets (Widget). Todo widget (Widget) debe tener un contenedor padre (parent), que es la ventana principal o ventana hija a la que pertenece el control. Al crear un widget (Widget), debe pasar su objeto de ventana principal como primer parámetro al constructor.

El uso de widgets (Widget) en tkinter generalmente requiere los siguientes pasos:

1. Importe la biblioteca tkinter.

2. Cree un objeto Ventana Raíz: A continuación, puede crear un objeto Ventana Raíz, que es la ventana de nivel superior de su programa tkinter. Cree una ventana raíz con la siguiente línea de código:

raíz = tk.Tk()

La ventana raíz es la ventana principal de todo el programa tkinter.

3. Cree un objeto de widget (Widget): antes de crear un objeto de widget, debe conocer el tipo y las propiedades de cada widget. Elija el widget apropiado para sus necesidades.

Por ejemplo, para crear un widget de etiqueta, se puede usar la siguiente línea de código:

label = tk.Label(root, text="¡Hola, mundo!")

El código anterior crea un widget de etiqueta llamado label y lo coloca en la ventana raíz. texto es el texto de la etiqueta.

4. Widget de diseño (Widget): una vez que se crea el widget, puede usar el administrador de diseño para colocar y dimensionar el widget dentro de la ventana raíz. Los administradores de diseño comúnmente utilizados son pack(), grid() y place().

5. Registre controladores de eventos, como eventos de clic de botón, etc.

6. Ingrese al bucle de mensajes principal (bucle de eventos principal): finalmente, debe ingresar al bucle de mensajes principal para responder a las operaciones y eventos del usuario. Ingrese al bucle de mensajes principal con:

raíz.mainloop()

Cabe señalar que puede haber diferentes propiedades y métodos en diferentes controles, por lo que la sintaxis de uso específico debe ajustarse de acuerdo con los diferentes controles. Además, también puedes modificar dinámicamente el valor de la propiedad del control a través del método config() o acceder directamente a la propiedad.

diseño del paquete

pack() es un método de diseño relativamente simple. Sin ningún parámetro, organizará los controles en el orden en que se agregaron, de arriba a abajo, línea por línea, y los mostrará en el centro de forma predeterminada. La sintaxis básica del método pack es la siguiente:

widget.pack(opciones)

Entre ellos, el widget representa el widget que se colocará; las opciones son una lista de parámetros opcionales, de la siguiente manera:

parámetro

ilustrar

ancla

La alineación del componente en la ventana, hay 9 valores de parámetros de orientación, como "n"/"w"/"s"/"e"/"ne", y "centro", etc.)

expandir

Si la ventana se puede expandir, el valor del parámetro es Verdadero (extendido) o Falso (no expandido), el valor predeterminado es Falso, si se establece en Verdadero, la posición del control siempre está en el centro de la ventana

llenar

El valor del parámetro es X/Y/BOTH/NONE, lo que significa que el control puede estirarse en ambas direcciones horizontal/vertical/simultáneamente. Por ejemplo, cuando fill = X, el control ocupará todo el espacio restante en la horizontal. dirección.

ipadx, ipads

Debe usarse junto con el valor del parámetro de relleno, indicando la distancia (margen interior) entre el componente y el contenido y el borde del componente, como la distancia entre el contenido del texto y el borde del componente, en píxeles (p), o centímetros (c), pulgadas (i)

padx pady

Se utiliza para controlar las distancias superior, inferior, izquierda y derecha (márgenes) entre los componentes, en píxeles (p) o centímetros (c), pulgadas (i)

lado

Donde se coloca el componente en la ventana, los valores de los parámetros son 'arriba', 'abajo', 'izquierda', 'derecha'. Tenga en cuenta que debe usar el formato de cadena cuando la palabra está en minúsculas, y no necesita usar el formato de cadena si es una palabra en mayúsculas

El código de ejemplo para el uso del método de diseño del paquete es el siguiente:

import tkinter as tk

root = tk.Tk()

button1 = tk.Button(root, text="Button 1")
button1.pack(side="left")

button2 = tk.Button(root, text="Button 2")
button2.pack(side="left")

button3 = tk.Button(root, text="Button 3")
button3.pack(side="right")

root.mainloop()

diseño de cuadrícula

Grid es un diseño de cuadrícula, lo que equivale a tratar la ventana como una tabla compuesta de filas y columnas, y cada celda de la tabla puede colocar un control. La sintaxis básica del método grid es la siguiente:

widget.grid(opciones)

Entre ellos, el widget representa el widget que se colocará; las opciones son una lista de parámetros opcionales, de la siguiente manera:

parámetro

ilustrar

columna

La columna donde se encuentra el control en la tabla, la columna más a la izquierda del formulario es la columna de inicio y la predeterminada es la columna 0

columnasapn

El número de columnas que abarca la instancia de control, el valor predeterminado es 1 columna y varias celdas adyacentes en una fila se pueden combinar a través de este parámetro.

ipadx, ipads

Se utiliza para controlar el relleno, llenando el espacio del tamaño especificado en las direcciones izquierda, derecha, arriba y abajo dentro de la celda.

padx pady

Se utiliza para controlar el margen exterior y llenar el espacio del tamaño especificado en las direcciones izquierda, derecha, arriba y abajo fuera de la celda.

fila

La fila donde se encuentra el control en la tabla, la parte superior del formulario es la fila de inicio y el valor predeterminado es la fila 0

filas

El número de filas que abarca la instancia de control, el valor predeterminado es 1 fila y varias celdas adyacentes en una columna se pueden combinar a través de este parámetro.

pegajoso

Esta propiedad se utiliza para establecer la posición del control en la celda, el valor del parámetro es el mismo que el ancla, si no se establece este parámetro, el control se centra en la celda

El código de ejemplo de uso del método de diseño de cuadrícula es el siguiente:

import tkinter as tk

root = tk.Tk()

label1 = tk.Label(root, text="Label 1")
label1.grid(row=0, column=0)

label2 = tk.Label(root, text="Label 2")
label2.grid(row=0, column=1)

label3 = tk.Label(root, text="Label 3")
label3.grid(row=1, column=0, columnspan=2)

root.mainloop()

disposición del lugar

En comparación con los primeros dos métodos de diseño, el uso del método place() para la gestión del diseño es más refinado. A través del administrador de diseño place(), puede especificar directamente la posición absoluta del control en el formulario, o la posición relativa con respecto a otros controles. .

La sintaxis básica del método place es la siguiente:

widget.place(opciones)

Entre ellos, el widget representa el widget que se colocará; las opciones son una lista de parámetros opcionales, de la siguiente manera:

parámetro

ilustrar

ancla

Defina la orientación del control en el formulario, el valor del parámetro es N/NE/E/SE/S/SW/W/NW o CENTER, el valor predeterminado es NW

modo borde

Defina si las coordenadas del control deben considerar el ancho del límite, el valor del parámetro es EXTERIOR (excluyendo el límite) o INTERIOR (incluido el límite), y el valor predeterminado es INTERIOR.

x, y

Define la posición absoluta inicial del control en forma de raíz en las direcciones horizontal y vertical

relajarse, confiar

1. Defina la posición relativa del control con respecto a la ventana raíz (u otros controles) en las direcciones horizontal y vertical (es decir, la relación de desplazamiento), y el rango de valores está entre 0,0 y 1,0. 2. Puede configurar el elemento de parámetro in_, relativo a alguna
otra posición de los controles

anchura altura

La altura y el ancho del propio control (en píxeles)

relheight、relwidth

La relación entre la altura y el ancho del control y la altura y el ancho de la forma raíz, y el valor también está entre 0,0 y 1,0

El código de ejemplo para el uso del método de diseño de lugar es el siguiente:

import tkinter as tk

root = tk.Tk()

button1 = tk.Button(root, text="Button 1")
button1.place(x=10, y=10, width=100, height=50)

button2 = tk.Button(root, text="Button 2")
button2.place(x=120, y=10, width=100, height=50)

button3 = tk.Button(root, text="Button 3")
button3.place(x=10, y=70, width=210, height=50)

root.mainloop()

Tkinter proporciona estos tres administradores de diseño, cada uno de los cuales tiene sus escenarios y características aplicables. Por lo general, no se recomienda mezclar administradores de diseño de paquetes, cuadrículas y lugares. Pero en algunos casos especiales, también es posible usar diferentes administradores de diseño en diferentes widgets. Por ejemplo, use el administrador de diseño del paquete para crear dos marcos (Frame), y luego use el administrador de diseño de cuadrícula o lugar en el marco para diseñar más componentes. Este enfoque puede combinar diferentes requisitos de diseño hasta cierto punto, pero aún debe manejarse con cuidado para evitar resultados de diseño confusos.

[En Tkinter, hay varios tipos de contenedores que se pueden usar para organizar y acomodar otros Widgets.Además de Frame, Toplevel, LabelFrame, etc., también se pueden usar como contenedores. Un contenedor es un tipo especial de Widget, que es especial porque tiene la capacidad de acomodar otros componentes y desempeña un papel organizativo y de gestión en el diseño de la interfaz.

El siguiente es el código de implementación para la interfaz de inicio de sesión con tres diseños

1. En el caso de usar el diseño del paquete , primero mire el efecto

El código fuente es el siguiente: en el código anterior, creamos tres contenedores Frame, que se utilizan para colocar los controles de cada fila:

#pack布局
from tkinter import *

# 创建一个窗体,名称为root
root = Tk()
# 为窗体添加标题
root.title("用户登录")
root.geometry("400x180")

root.resizable(width=False, height=False) # 不可调整大小

frame1 = Frame(root)
frame1.pack(side=TOP, pady=5)
Label_username = Label(frame1,text = "登录名:",font = ("华为黑体",16)).pack(side = LEFT, padx=5)
Entry_username = Entry(frame1,font = ("华文黑体",16),width = 20).pack(side = LEFT, padx=5)

frame2 = Frame(root)
frame2.pack(side=TOP, pady=5)
Label_password = Label(frame2,text = "密  码:",font = ("华为黑体",16)).pack(side = LEFT, padx=5)
Entry_password = Entry(frame2,font = ("华文黑体",16),width = 20, show="*").pack(side = LEFT, padx=5) #使用show属性将密码显示为星号

frame3 = Frame(root)
frame3.pack(side=TOP, pady=5)
Button_login = Button(frame3,text = "登录",font = ("华文黑体",16),width = 8).pack(side = LEFT, padx=5)
Button_cancer = Button(frame3,text = "取消",font = ("华文黑体",16),width = 8).pack(side = LEFT, padx=5)

root.mainloop()

2. En el caso del diseño de cuadrícula , primero observe el efecto

[Sugerencia, la línea naranja en la imagen de arriba la agregué para mejorar la comprensión, y el efecto de la operación real no lo es]

El código fuente es el siguiente:

# grid布局
from tkinter import *

root = Tk()
root.title("用户登录")
root.geometry("400x180")

root.resizable(width=False, height=False) # 不可调整大小

# 占位
label = Label(root,text = "     ").grid(row = 0,column = 0,rowspan = 2)

Label_username = Label(root,text = "用户名:",font = ("华文黑体",16)).grid(row = 0,column = 1)
Entry_username = Entry(root,font = ("华文黑体",16)).grid(row =0,column = 2)
Label_password = Label(root,text = "密  码:",font = ("华文黑体",16)).grid(row = 1,column = 1)
Entry_password = Entry(root,font = ("华文黑体",16), show="*").grid(row =1,column = 2)  #使用show属性将密码显示为星号
Button_login = Button(root,text = "登录",width = 8,font = ("华文黑体",16)).grid(row = 3,column = 2,sticky = "e")
Button_cancer = Button(root,text = "取消",width = 8,font = ("华文黑体",16)).grid(row =3,column = 2,sticky = "w")

root.mainloop()

3. En el caso de usar el diseño del lugar , primero mire el efecto

El código fuente es el siguiente:

# place布局
from tkinter import *

root = Tk()
root.title("用户登录")
root.geometry("400x180")

root.resizable(width=False, height=False) # 不可调整大小

Label_username = Label(root,text = "登录名:",font = ("华为黑体",16)).place(x = 40,y = 20)
Entry_username = Entry(root,font = ("华文黑体",16),width = 20).place(x = 120,y = 20)
Label_password = Label(root,text = "密  码:",font = ("华为黑体",16)).place(x = 40,y = 60)
Entry_password = Entry(root,font = ("华文黑体",16),width = 20, show="*").place(x = 120,y = 60) #使用show属性将密码显示为星号
Button_login = Button(root,text = "登录",font = ("华文黑体",16),width = 8).place(x = 70,y = 120)
Button_cancer = Button(root,text = "取消",font = ("华文黑体",16),width = 8).place(x = 210,y = 120)

root.mainloop()

Algunas notas adicionales sobre el código anterior

1. Agregue un parámetro show="*" al constructor del control Entry y reemplace el texto ingresado con asteriscos. De esta forma, la contraseña ingresada por el usuario no se mostrará en texto plano.

2. Puede utilizar el método minsize() y el método maxsize() para establecer el tamaño mínimo y el tamaño máximo de la ventana, respectivamente. como:

root.minsize(400, 180) # establecer el tamaño mínimo

root.maxsize(600, 380) # establecer el tamaño máximo

3. Puede usar el método resizable() para controlar si se puede cambiar el tamaño de la ventana de tkinter. Este método acepta dos parámetros (el primero es la dirección horizontal, el segundo es la dirección vertical) para controlar las condiciones de contorno ajustables de la ventana, donde cada parámetro puede establecer un valor:

Verdadero: Ajustable;

Falso: no ajustable;

El método redimensionable() es True de forma predeterminada para los ajustes en todas las direcciones, es decir, la ventana se puede redimensionar horizontal y verticalmente de forma predeterminada, lo que equivale a establecer redimensionable(Verdadero, Verdadero). Si desea deshabilitar el cambio de tamaño de la ventana en cualquier dirección, puede establecer ambos parámetros en Falso. Si solo desea deshabilitar el cambio de tamaño en dirección horizontal o vertical, puede establecer el parámetro correspondiente en Falso.

Si desea deshabilitar el cambio de tamaño en todas las direcciones, puede establecer ambos parámetros en Falso. como:

root.resizable(False, False) # no redimensionable o root.resizable(width=False, height=False)

Supongo que te gusta

Origin blog.csdn.net/cnds123/article/details/131341244
Recomendado
Clasificación