Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42

    [PYTHON]Problema con le StringVar di TKinker

    codice:
    class backup():
        #Variabili di output
        name=""
        #Variabili di sistema
        outputDirectory=""
        directoryList=()
        lastBackup=""
        #Sottometodi
        def chooseDirectory(directory):
            directory=askdirectory()
        #Metodi
        def newBackup(self):
            #Creazione variabili
            name=StringVar()
            #Creazione Interfaccia
            newBackupRoot=Tk()
            newBackupRoot.title("Nuovo Backup | BackupManager")
            titleLabel=Label(newBackupRoot,text="Compila i seguenti campi", bg="White",fg="Purple").grid(row=0,column=0)
            
            titleLabel=Label(newBackupRoot,text="Nome del Backup: ", bg="White",fg="Blue").grid(row=1,column=0)
            entryVar=Entry(newBackupRoot,textvariable=name).grid(row=1,column=1)
    
            titleLabel=Label(newBackupRoot,text="Cartella di salvataggio: ", bg="White",fg="Blue").grid(row=2,column=0)
            askDirectory=Button(newBackupRoot,text="Scegli...", command=lambda:self.chooseDirectory(newBackupRoot)).grid(row=2,column=1)
    
            askDirectory=Button(newBackupRoot,text="Conferma", command=lambda:self.confermaNewBackupCheckVariable(name.get())).grid(row=4,column=2)
            newBackupRoot.mainloop()
            
        #Sottometodiprint directory
        def chooseDirectory(self,root):
            self.outputDirectory=askdirectory(title="Scegli la cartella in cui effettuare i backup",parent=root)
    
        def confermaNewBackupCheckVariable(self,name):
            print name
            self.name=name
            print self.name
            if self.name == "" or self.outputDirectory == "":
                showerror("Errore!", "Devi inserire dei dati validi")
                print self.name + self.outputDirectory
            else:
                if (askyesno("Conferma i dati", "Nome del backup: %s \n Cartella di salvataggio: %s" % (self.name, self.outputDirectory))) == 1:
                    print "OK"
    Sopra ho riportato il codice della classe backup. Quando chiedo il nome del backup nel metodo newBackup, la variabile che risulta è vuota, come se io lasciassi vuoto l'entri. Sapreste aiutarmi?
    Grazie in anticipo
    ??????????????????????????

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42
    Aggiornamento:
    ho capito che l'errore sta nel mettere il widget in un altra finestra rispetto alla principale, sapete per caso come risolvere?
    Grazie ancora
    ??????????????????????????

  3. #3
    Facendo una prova al volo a me non risulta questo problema... in confermaNewBackupCheckVariable arriva correttamente il nome del backup inserito nella finestra; ovviamente prima della linea
    codice:
    self.name=name
    self.name risulta vuoto, dato che hai legato entry alla variabile name locale a newBackup.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42
    Non so, a me la variabile name e self.name risultano vuote nella funzioneconfermaNewBackupCheckVariable.
    Se invece faccio comparire l'entry sulla finestra principale, che non è quella che creo nella funzione newBackup, ma bensì un altra che non è riportata nel codice tutto funziona. Come dovrebbe.
    La stessa cosa mi era capitata facendo un altro programma, dove si chiedeva il login su un altra finestra rispetto alla principale, sia username che password risultavano vuoti. non so cosa fare.

    Grazie comunque della tua risposta
    ??????????????????????????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.