2017-10-16 8 views
-1

Je crée un gui avec tKinter, en travaillant avec python pour la première fois. Une partie de mon interface graphique est une arborescence, les nœuds de l'arborescence ont des images attachées. J'ai créé une fonction pour ajouter de nouveaux nœuds à l'arborescence. Je souhaite ajouter une image au nouveau noeud en fonction de la mère du noeud. Dans ce cas La variable 'curItem' retourne la mère sous forme de chaîne, "test" dans ce cas. Je veux combiner la chaîne "photo_" et "test" et l'utiliser dans le code 'tree.insert'. Mais pour que cela fonctionne, je dois convertir la chaîne à autre chose, mais je ne sais pas quoi et comment faire cela.Comment combiner deux chaînes pour décrire une propriété de tree.insert?

Ceci est probablement une question très basique, mais j'ai été incapable de trouver une réponse jusqu'à présent. Une partie du code correspondant:

photo_test = PhotoImage(file="resources/test.png") 

def add(): 
    curItem = tree.selection()[0] #returns "test" 
    img = "photo_" + curItem 
    tree.insert(curItem, 'end', text='new', image=img) #doesn't work 
    tree.insert(curItem, 'end', text='new', image=photo_test) #works 

Répondre

0

Vous essayez de définir l'image à la chaîne « photo_test ». Essayez de stocker la photo dans une dict et accédez-y via la chaîne, quelque chose comme ça.

photos = dict() 
photos["photo_test"] = PhotoImage(file="resources/test.png") 

def add(): 
    curItem = tree.selection()[0] #returns "test" 
    img = "photo_" + curItem 
    tree.insert(curItem, 'end', text='new', image=photos[img]) 

Vous semblez cependant avoir mal compris la différence entre une variable et une chaîne. Une chaîne est juste du texte dans le code, pas réellement du code, donc vous ne pouvez pas passer un nom de variable sous forme de chaîne et attendez que le code lise cette valeur. "photo_test" n'est pas la même chose que photo_test.