.geometry in Tkinter

di il
19 risposte

.geometry in Tkinter

Salve, sono nuovo nel forum quindi mi scuso a priori per eventuali imprecisioni.

trovo difficoltà a gestire il comando window.geometry (arg1,arg2) in Tkinter. Se gli argomenti sono numeri va tutto bene, se gli argomenti sono parametri (interi) definiti in precedenza dà errore anche se scrivo la sintassi corretta citata nei manuali di riferimento. 

Es. window.geometry(f "{W}x{H}")

dove W ed H sono stati già definiti. Il risultato è un errore di sintassi indicato nelle seconde virgolette ("). Qualcuno sa aiutarmi? Grazie

19 Risposte

  • Re: .geometry in Tkinter

    Nessuno spazio tre ‘f’ e le virgolette!

  • Re: .geometry in Tkinter

    Grazie a migliorabile per la sollecita risposta ma, tolto lo spazio l'errore di sintassi continua

  • Re: .geometry in Tkinter

    19/02/2023 - goldman ha scritto:


    Il risultato è un errore di sintassi indicato nelle seconde virgolette (")

    Ovvero, qual è l'errore? Riporta la descrizione per intero.

  • Re: .geometry in Tkinter

    Riporto per intero il codice di prova:

    # -*- coding: utf-8 -*-
    import Tkinter as tk

    win = tk.Tk()

    w = 600 # Width 
    h = 300 # Height

    screen_width = win.winfo_screenwidth()  # Width of the screen
    screen_height = win.winfo_screenheight() # Height of the screen

    # Calculate Starting X and Y coordinates for Window
    x = (screen_width/2) - (w/2)
    y = (screen_height/2) - (h/2)

    win.geometry (f"{w}x{h}+{x}+{y})

    win.mainloop()
    La risposta al “run” è stata: “There'is an error in your program: EOL while scanning string literal”

  • Re: .geometry in Tkinter

    Perché hai tolto le virgolette rispetto al primo post? Normale che non funzioni

  • Re: .geometry in Tkinter

    Mio errore di battitura nel forum. nel codice le virgolette ci sono:

    win.geometry (f"{w}x{h}+{x}+{y}")

    e l'errore comunicato è sempre quello

  • Re: .geometry in Tkinter

    20/02/2023 - goldman ha scritto:


    Mio errore di battitura nel forum. nel codice le virgolette ci sono:

    win.geometry (f"{w}x{h}+{x}+{y}")

    e l'errore comunicato è sempre quello

    Scusa, ma nel riportare il codice devi fare copia/incolla, quindi come potrà mai esserci un errore di battitura?
    Se stai ricopiando il codice, non va bene in quanto potresti introdurre errori non presenti nell'originale (come è accaduto), e viceversa.

    Detto questo… ok per l'errore, quindi altra domanda: su quale riga si verifica? e siamo sicuri che il resto del codice sia corretto?

    Scusa per le domande, ma qui si devono cavare fuori le informazioni minime necessarie con il cavatappi, quasi come se fosse nostro tutto l'interesse a individuare il problema nel codice.

    Un po' di buona volontà…

  • Re: .geometry in Tkinter

    EOL è esattamente perché mancano le virgolette alla fine, così come l'errore che avevi prima era perché hai lasciato lo spazio tra f e le virgolette, come ti ha detto migliorabile. Se hai introdotto un terzo errore, forse è meglio che te la veda tu a questo punto…

  • Re: .geometry in Tkinter

    Come ho già riportato l'errore persiste anche con tutte le virgolette e senza spazi. Riporto di nuovo il codice per completezza:

    # -*- coding: utf-8 -*-
    from Tkinter import tk

    win = tk.Tk()

    w = 600 # Width 
    h = 300 # Height

    screen_width = win.winfo_screenwidth()  # Width of the screen
    screen_height = win.winfo_screenheight() # Height of the screen

    # Calculate Starting X and Y coordinates for Window
    x = (screen_width/2) - (w/2)
    y = (screen_height/2) - (h/2)

    win.geometry (f"{w}x{h}+{x}+{y}")
    win.mainloop()

    e l'errore è : invalid statement

  • Re: .geometry in Tkinter

    win.geometry('%dx%d+%d+%d' % (w, h, x, y))

  • Re: .geometry in Tkinter

    20/02/2023 - goldman ha scritto:


    Come ho già riportato l'errore persiste anche con tutte le virgolette e senza spazi. Riporto di nuovo il codice per completezza:

    […]

    e l'errore è : invalid statement

    Quindi, dici che l'errore persiste e per completezza hai riportato il codice uguale a prima (a tuo dire), ma adesso però magicamente l'errore è diverso ed è diventato “Invalid statement”. E questo senza alcuna modifica? Mi pare abbastanza strano…

    Ma allora, l'errore persiste (cioè è uguale) o è differente?
    E di nuovo ancora, come già richiesto prima, su quale riga si verifica?

  • Re: .geometry in Tkinter

    Se non fosse strrano non avrei chiesto aiuto a questo forum.

    L'errore persiste. Ho modificato lo statement in cento modi diversi seguendo per giorni pedissequamente gli esempi che vengono dati nel web su siti di tutto rispetto. Poichè inoltre il debub degli errori di python è piuttosto primitivo mi è capitato altre volte che l'errore denunciato su di una riga si riferisse alla precedente, quindi ho commentato in questo codice tutte le righe precedenti non essenziali. Nulla da fare.

    Il debug riporta tipi di errori differenti facendo girare due volte lo stesso codice e sono io il primo a trovare strano questo risultato, come trovo strano che per parametrizzare un dato numerico su questo metodo (geometry) gli esempi riportino un notevole numero di sintassi possibili (provate tutte, nessuna funzionante). 

    Le insinuazioni  di superficialità ed il leggero sarcasmo non giovano alla soluzione del problema visto che prima di rivolgermi a questo forum di soggetti, certamente esperti , ho passato vari giorni a cercare di capire la natura dell'errore valendomi dell'esperienza maturata  di alcune decine di annii di programmazione inaltri linguaggi. 

    In ogno modo anche se non ho risolto il mio problema ringrazio tutti gli intervenuti per la loro disponibilità ed il moderatore per la pazienza. Ciao a tutti

  • Re: .geometry in Tkinter

    Non hai detto nulla di specifico sul mio suggerimento

  • Re: .geometry in Tkinter

    No, l'errore non persiste: hai un altro errore.  Persiste il fatto che non riesci a chiamare il metodo.

    Puoi controllare se è come dice oregon, puoi fare debug vedendo cosa ti viene come stringa generata, prima di chiamarla nel metodo; puoi postare il codice che funzionava con le literals, magari con il copia & incolla, altrimenti è inutile…

Devi accedere o registrarti per scrivere nel forum
19 risposte