Topic: Come rilevare l'evento modifica dimensione finestra [risolto]  (Letto 218 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline sirkain

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Salve ha tutti, ho un problema che mi tormenta da tempo, ho cercato ovunque senza trovare alcuna soluzione.
Come da titolo, come si può rilevare l'evento di modifica dimensione di una finestra? Vi spiego meglio.
Ho creato un visualizzatore d'immagini usando tkinter e PIL, il tutto funziona benissimo, però quando modifico la dimensione della finestra manualmente, riducendola l'immagine viene tagliata, mentre ingrandendola l'immagine resta della dimensione originale. Vorrei poter ridimensionare l'immergine quando appunto si riduce o ingrandisce la dimensione della minestra, il tutto in tempo reale, come qualsiasi visualizzatore d'immagini. Riesco a farlo senza problemi, tramite un bottone che contiene il codice per ridimensionare l'immagine, leggendo altezze e larghezza della finestra. Ma vorrei ottenere lo stesso risultato, senza dover premere un pulsante, ma in maniera automatica, tramite appunto une evento. Ho pensato che si possa fare tramite i protocolli, quindi con tk. protocol, ma oltre ai classici "WM_DELETE_WINDOW" e soci, non ho trovato nulla che riguarda la rilevazione delle ridimensionamento della finestra.
« Ultima modifica: Maggio 17, 2020, 23:45 da sirkain »

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 381
  • Punti reputazione: 0
    • Mostra profilo
Re:Come rilevare l'evento modifica dimensione finestra
« Risposta #1 il: Maggio 16, 2020, 15:44 »
Ciao @sirkain, ben venuto

Più che la finestra dovresti considerare il "contenitore" della immagine.

In ogni caso un generico widget tkinter, tra cui anche i Frame, al suo ridimensionarsi emette un evento "<Configure>", qui la documentazione, è tale evento che devi intercettare per gestire la faccenda.

Se può interessarti, circa un anno fa abbozzai un articolo per la costruzione di un controllo personalizzato (chiestomi in un altro forum), che non terminai, nel cui codice di test (class GUI_04_G(tk.Tk):) utilizzai proprio tale evento, applicato ad un cavas, per ridisegnare una immagine selezionata, vedi un po' se Ti è utile.

[Edit] rileggendo il post, ho visto di aver indicato minuscola la "C" evidenziata, ho corretto.
« Ultima modifica: Maggio 17, 2020, 08:52 da nuzzopippo »

Offline sirkain

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:Come rilevare l'evento modifica dimensione finestra
« Risposta #2 il: Maggio 17, 2020, 23:44 »
Diavolo l'evento  "<Configure>" mi era sfuggito, avevo già visto e usato altri eventi, per il mouse e tastiera... impazzivo da tempo e avevo la soluzione sotto gl'occhi... un classico  :embarrassed:
Hai ragione sul contenitore, altro errore enorme. Ho provato infatti a usare la finestra, con l'evento  "<Configure>", è stato un disastro xD mentre con il contenitore dell'immagine va.

Grazie mille dei consigli e risposta. Ho dato un occhiata al tuo precedente articolo, è stato veramente utile. Ho quasi risolto, ora devo solo far funzionare meglio il tutto, ma ho quello che mi serve. Grazie :)