2010-12-13 47 views
0

J'étudie Tkinter, et j'ai besoin d'un bouton, puis quand je clique dessus, je fais quelque chose avec du code, puis j'imprime le résultat.Comment puis-je créer une interface graphique pour afficher les résultats?

J'ai commencé avec ceci:

from Tkinter import * 
import heapq 

root = Tk() 
root.title("TEST") 
root.geometry("800x600") 


#-------------------CODE----------------------- 
def makeHuffTree(symbolTupleList): 
    trees = list(symbolTupleList) 

    heapq.heapify(trees) 
    while len(trees) > 1: 
     childR, childL = heapq.heappop(trees), heapq.heappop(trees) 
     parent = (childL[0] + childR[0], childL, childR) 
     heapq.heappush(trees, parent) 
    return trees[0] 

def printHuffTree(huffTree, prefix = ''): 
    if len(huffTree) == 2: 
     print huffTree[1], prefix 
    else: 
     printHuffTree(huffTree[1], prefix + '0') 
     printHuffTree(huffTree[2], prefix + '1') 

def OnButton(): 
    exampleData = [(0.124167 , 'e'), (0.0969225 , 't'),(0.0820011 , 'a'),] 
    huffTree = makeHuffTree(exampleData) 
    printHuffTree(huffTree) 

button = Button(root, text="Press me!", command=OnButton) 
button.pack() 

root.mainloop() 

Comment puis-je faire maintenant mon interface graphique pour produire les résultats?

+0

Où créez-vous le bouton? –

+0

le bouton n'est pas un problème, je peux le créer, mais je ne peux pas connecter ce bouton pour exécuter le code, après je l'ai pressé, et puis résulte en GUI – thaking

+0

@thaking salut je un m création de programme déflate algo en utilisant tkinter? Votre code pour huffman tree wud b utile pour moi .. Cn u plz me passer? Tout type d'aide apprécié – MalTec

Répondre

2

Vous voulez ajouter quelque chose comme ce qui suit dans votre code.

def OnButton(): 
    exampleData = [(0.124167 , 'e'), (0.0969225 , 't'),(0.0820011 , 'a'),] 
    huffTree = makeHuffTree(exampleData) 
    printHuffTree(huffTree) 

button = Button(root, text="Press me!", command=OnButton) 
button.pack() 

Si par « print" résultat de GUI » vous voulez dire que vous voulez que les résultats apparaissent dans une fenêtre plutôt que sur la sortie standard, vous devrez ajouter quelque chose comme un widget texte et remplacer tous vos print instructions avec <textwidget>.insert instructions/

+0

Merci beaucoup pour cet indice, je change mon code (voir sur edit2), mais maintenant je ne sais pas comment faire des fenêtres, ce qui montrera mes résultats dans l'interface graphique. Ce résultat d'impression "printHuffTree (huffTree)" est dans IDLE. – thaking

+2

@thaking: comme je l'ai dit dans ma réponse, vous devrez créer un widget de texte (par exemple: 'textwidget = Text (root, ...); textwidget.pack (...)' et changer vos instructions d'impression pour La seule façon d'obtenir un résultat satisfaisant, cependant, est de prendre le temps de travailler à travers un tutoriel Tkinter.Rappelez simplement une solution spécifique à votre problème spécifique se traduira par un cycle sans fin de "merci, mais maintenant comment faire JE ...". –