Cambiar la posición de MessageBox – Tkinter

Requisito previo: 

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:

Ventana principal (con botón)

Cuadro de mensaje (con etiquetas y botones)

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:

Ventana principal

Al hacer clic en el botón «Salir»

Caja de mensaje

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:

Cuando haga clic en el botón «Salir», se mostrará un cuadro de mensaje en la posición (300,200)

Publicación traducida automáticamente

Artículo escrito por abhigoya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *