Requisito previo:
- python tkinter
- Widget de cuadro de mensaje de Python tkinter
- Widget de nivel superior de Python tkinter
Python ofrece muchas bibliotecas y marcos para crear y desarrollar GUI (interfaz gráfica de usuario). De todas las bibliotecas o marcos de GUI, Tkinter es el método más utilizado porque es comparativamente más rápido y más fácil al crear una aplicación de GUI.
Creación de un cuadro de mensaje
Para crear un cuadro de mensaje, use el widget Toplevel() . Se utiliza un widget de nivel superior para crear una ventana encima de todas las demás ventanas. Se utiliza para proporcionar información adicional al usuario. Estas ventanas están directamente organizadas y administradas por el administrador de ventanas
Sintaxis:
Toplevel widget toplevel = Toplevel(root, bg, fg, bd, height,....) Create Label Label(toplevel,text="Enter text here..").pack() Create Button Button(toplevel,text="Enter text here..").pack() Set Size toplevel=Toplevel(root) toplevel.geometry("dimension")
Ejemplo:
Python3
from tkinter import * def messagebox(): toplevel = Toplevel(root) toplevel.title("QUIT") toplevel.geometry("300x100") l1=Label(toplevel, image="::tk::icons::question") l1.grid(row=0, column=0, pady=(7, 0), padx=(10, 30), sticky="e") l2=Label(toplevel,text="Are you sure you want to Quit") l2.grid(row=0, column=1, columnspan=3, pady=(7, 10), sticky="w") b1=Button(toplevel,text="Yes",command=root.destroy,width = 10) b1.grid(row=1, column=1, padx=(2, 35), sticky="e") b2=Button(toplevel,text="No",command=toplevel.destroy,width = 10) b2.grid(row=1, column=2, padx=(2, 35), sticky="e") root = Tk() root.geometry("300x200") root.title("Main Window") Button(root,text="Quit",command=messagebox,width = 7).pack(pady=80) root.mainloop()
Producción:
Posición de ajuste
Hasta ahora, no existe un método incorporado en tkinter para establecer la posición de un cuadro de mensaje. Pero la posición puede tratarse explícitamente.
Sintaxis:
toplevel.geometry(f"dimension+{root.winfo_x()}+{root.winfo_y()}")
- root.winfo_x()- Da a X la posición actual de la ventana principal
- root.winfo_y()- Da a Y la posición actual de la ventana principal
O
x_position = value y_position = value toplevel.geometry(f"dimension+{x_position}+{y_position}")
Ejemplo 1:
Python3
from tkinter import * def messagebox(): toplevel = Toplevel(root) toplevel.title("QUIT") toplevel.geometry(f"300x100+{root.winfo_x()}+{root.winfo_y()}") l1=Label(toplevel, image="::tk::icons::question") l1.grid(row=0, column=0, pady=(7, 0), padx=(10, 30), sticky="e") l2=Label(toplevel,text="Are you sure you want to Quit") l2.grid(row=0, column=1, columnspan=3, pady=(7, 10), sticky="w") b1=Button(toplevel,text="Yes",command=root.destroy,width = 10) b1.grid(row=1, column=1, padx=(2, 35), sticky="e") b2=Button(toplevel,text="No",command=toplevel.destroy,width = 10) b2.grid(row=1, column=2, padx=(2, 35), sticky="e") root = Tk() root.geometry("300x200") root.title("Main Window") Button(root,text="Quit",command=messagebox,width = 7).pack(pady=80) root.mainloop()
Producción:
Ejemplo 2:
Python3
from tkinter import * def messagebox(): toplevel = Toplevel(root) toplevel.title("QUIT") x_position = 300 y_position = 200 toplevel.geometry(f"300x100+{x_position}+{y_position}") l1=Label(toplevel, image="::tk::icons::question") l1.grid(row=0, column=0, pady=(7, 0), padx=(10, 30), sticky="e") l2=Label(toplevel, text="Are you sure you want to Quit") l2.grid(row=0, column=1, columnspan=3, pady=(7, 10), sticky="w") b1=Button(toplevel, text="Yes", command=root.destroy, width=10) b1.grid(row=1, column=1, padx=(2, 35), sticky="e") b2=Button(toplevel, text="No", command=toplevel.destroy, width=10) b2.grid(row=1, column=2, padx=(2, 35), sticky="e") root = Tk() root.geometry("300x200") root.title("Main Window") Button(root, text="Quit", command=messagebox, width=7).pack(pady=80) root.mainloop()
Producción: