Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: El mas antiguo en 16 Agosto 2022, 20:56 pm



Título: Posicionar ventana hija siempre relativa a la ventana padre.-
Publicado por: El mas antiguo en 16 Agosto 2022, 20:56 pm
Hola, ¿cómo están?, buen día para todos.
Les cuento lo que me ocurre, estoy haciendo un editor de texto/bloc de notas
y como es obvio necesito mostrar una ventana hija para realizar búsquedas,
el inconveniente lo tengo aquí, ¿cómo hago para que aparezca(como
aparece en el recorte de pantalla) siempre de la misma manera sin tener en
cuenta el lugar al cual se haya movido la ventana principal?.-

Es todo, desde ya muchas gracias por el tiempo que le dedique, yo seguiré
buscando y practicando.-

Código
  1. import tkinter as tk
  2. from tkinter import ttk
  3. from functools import partial
  4. from tkinter import  *
  5.  
  6.  
  7. def centrarVentana(root):
  8.    w = 500
  9.    h = 300
  10.  
  11.    ws = root.winfo_screenwidth()
  12.    hs = root.winfo_screenheight()
  13.    x = (ws/2) - (w/2)
  14.    y = (hs/2) - (h/2)
  15.    root.geometry('%dx%d+%d+%d' % (w, h, x, y))
  16.  
  17.  
  18. def otra(ventana):
  19.    t1 = Toplevel(ventana)
  20.  
  21.    t1.geometry('400x200')
  22.    t1.title("Ventana hija")
  23.  
  24.    t1.focus_set()
  25.  
  26.    t1.grab_set()
  27.  
  28.    t1.transient(master=ventana)
  29.  
  30.    t1.focus()
  31.  
  32.    t1.wait_window(t1)
  33.  
  34.  
  35. def imprimir_informacion(ventana):
  36.    ventana.update()
  37.    altura = ventana.winfo_reqheight()
  38.    anchura = ventana.winfo_reqwidth()
  39.    altura_pantalla = ventana.winfo_screenheight()
  40.    anchura_pantalla = ventana.winfo_screenwidth()
  41.    print(f"Altura: {altura}\nAnchura: {anchura}\nAltura de pantalla: {altura_pantalla}\nAnchura de pantalla: {anchura_pantalla}")
  42.  
  43.  
  44.  
  45.  
  46. def main():
  47.    ventana = tk.Tk()
  48.    ventana.title("Posicionar ventana")
  49.    centrarVentana(ventana)
  50.  
  51.  
  52.    boton = ttk.Button(ventana, text="Información", command=partial(imprimir_informacion, ventana))
  53.    boton.place(x=150, y=150)
  54.  
  55.  
  56.    boton = ttk.Button(ventana, text="Otra ventana", command=partial(otra, ventana))
  57.    boton.place(x=250, y=150)
  58.  
  59.    ventana.mainloop()
  60.  
  61. if __name__ == '__main__':
  62.    main()

https://ibb.co/0DF0fkD

Slds. Daniel ☕☕☕


Título: Re: Posicionar ventana hija siempre relativa a la ventana padre.-
Publicado por: reymosquito en 17 Agosto 2022, 05:23 am
basicamente como hiciste para centrar la principal:
Código
  1. def otra(ventana):
  2.  
  3.    t1 = Toplevel(ventana)
  4.    w=400
  5.    h=200
  6.    x=ventana.winfo_rootx()+510
  7.    y=ventana.winfo_rooty()-32
  8.  
  9.    t1.geometry('%dx%d+%d+%d' % (w, h, x, y))
  10.    #etc


Título: Re: Posicionar ventana hija siempre relativa a la ventana padre.-
Publicado por: El mas antiguo en 17 Agosto 2022, 14:34 pm
Hola rey ¿ como estas?, funciona como lo esperado, gracias...

Slds. Daniel ☕☕☕