2010-12-13 121 views
0

我正在學習Tkinter,我需要一個Button,然後當我點擊它時,用一些代碼做一些事情,然後打印結果。我怎樣才能讓我的GUI輸出結果?

我開始用這樣的:

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() 

如何我現在做一個我的GUI輸出的結果?

+0

你在哪裏創建按鈕? – 2010-12-13 11:53:36

+0

該按鈕不是問題,我可以創建它,但然後我不能連接這個按鈕來運行代碼,之後我按下它,然後導致GUI。 – thaking 2010-12-13 12:07:37

+0

@thaking嗨我一個使用tkinter創建程序deflate算法?你的huffman樹的代碼wud b對我有幫助..你的plz通過我嗎?任何形式的幫助讚賞 – MalTec 2012-01-30 12:55:25

回答

2

您要添加的東西就像在你的代碼如下:

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() 

如果「‘打印’結果在GUI」你的意思是你想要的結果出現在窗口,而不是在標準輸出上,你需要添加類似文本小部件的東西,並用<textwidget>.insert語句替換所有語句/

+0

非常感謝這個提示,我改變了我的代碼(請參閱edit2),但現在我不知道如何製作窗口,這會在GUI中顯示我的結果。這個「printHuffTree(huffTree)」打印結果在IDLE中。 – thaking 2010-12-13 12:19:27

+2

@thaking:就像我在我的回答中所說的,您需要創建一個文本小部件(例如:'textwidget = Text(root,...); textwidget.pack(...)'並將您的打印語句更改爲插入語句,但獲得滿意結果的唯一方法是花費一些時間來完成Tkinter教程,只是要求針對具體問題的具體解決方案會導致無限循環的「謝謝,但現在怎麼辦?一世 ...」。 – 2010-12-13 12:41:24