2010-12-13 79 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