2015-12-07 1 views
0

Dans cette application GUI, simpleapp est la fenêtre principale. Dans le cadre de l'initialisation de simpleapp, j'essaie de définir le répertoire personnel de l'application, en utilisant la classe setHomeDir pour ouvrir une fenêtre afin de pouvoir confirmer/définir le répertoire de travail actuel. Pour commencer, je ne parviens pas à afficher le répertoire de travail actuel dans la fenêtre setHomeDir, c'est-à-dire que je ne suis pas en mesure d'obtenir self.entryVariable.set(home) pour fonctionner.Impossible d'afficher la valeur dans le widget Entrée dans Tkinter GUI

Où est-ce que je me trompe ici?

import Tkinter, os 


class simpleapp(Tkinter.Tk): 
    def __init__(self,parent): 
     Tkinter.Tk.__init__(self,parent) 
     self.geometry('500x300+200+50') 
     self.home_dir=os.getcwd() 
     self.t=setHomeDir(parent=self, home=self.home_dir) 



class setHomeDir(Tkinter.Tk): 
    def __init__(self,parent, home): 
     Tkinter.Tk.__init__(self) 
     self.parent = parent 
     self.geometry('500x100+200+50') 
     self.title('Set Home Directory') 

     self.grid() 

     #Input Box 
     self.entryVariable = Tkinter.StringVar() 
     self.entry = Tkinter.Entry(self, textvariable=self.entryVariable) 
     self.entryVariable.set(home) 
     self.entry.grid(column=0,row=0,sticky='EW') 


     self.grid_columnconfigure(0,weight=1) 
     self.resizable(True,False) 


if __name__ == "__main__": 
    app = simpleapp(None) 
    app.title('Main Window') 
    app.mainloop() 
+0

Pourquoi ne pouvez-vous pas le faire fonctionner? Est-ce qu'il lance une erreur? Quelle erreur? Êtes-vous certain que le problème est lorsque vous appelez 'self.entryVariable.set (home)'? Il semble que vous ne puissiez jamais atteindre cette ligne de code parce que vous appelez 'setHomeDir' avec une variable qui n'existe pas. –

+0

Il n'y a pas d'erreur, juste une zone de texte vide où une valeur est attendue. Je crois que cette ligne de code est atteinte. Par exemple, si je regarde dans app.t, alors la valeur est présente. c'est-à-dire que app.t.entryVariable.get() affiche le répertoire courant stocké sous forme de texte – akrishnamo

Répondre

0

Vous ne souhaitez pas non plus plusieurs instances de Tk(). Il devient confus quand il y a plus d'une instance, donc utilisez plutôt un Toplevel.

import Tkinter, os 

class SimpleApp(): 
    def __init__(self,parent): 
     self.parent = parent 
     self.parent.geometry('500x300+200+50') 
     self.parent.title('Main Window') 
     self.home_dir=os.getcwd() 

     ## pass same Tkinter instance to the class 
     SetHomeDir(parent=self.parent, home=self.home_dir) 

class SetHomeDir(): 
    def __init__(self,parent, home): 
     self.parent = parent 
     self.top=Tkinter.Toplevel(self.parent) 
     self.top.geometry('500x100+200+500') 
     self.top.title('Set Home Directory') 

     #Input Box 
     self.entryVariable = Tkinter.StringVar() 
     self.entry = Tkinter.Entry(self.top, textvariable=self.entryVariable) 
     self.entryVariable.set(home) 
     self.entry.grid(column=0,row=0,sticky='EW') 
     self.entry.focus_set() 

     self.top.grid_columnconfigure(0,weight=1) 
     self.top.resizable(True,False) 

if __name__ == "__main__": 
    root=Tkinter.Tk() 
    app = SimpleApp(root) 
    root.mainloop() 
+0

Votre réponse commence par "Aussi ...". A quoi faites-vous référence? "Aussi" par rapport à quoi? –