2012-06-17 23 views
1

我試圖在python中創建一個代碼。我已經有了一些函數和一個GUI,但現在我想在一個標籤中顯示一個函數的輸出。在標籤中顯示函數的輸出

比如我有最小的功能:

def minimum(numbers): 
    numbers.sort() 
    return numbers[0] 

,我有這樣的標籤:

minimum = Label(secondFrame, text="Minumum:", font=("Verdana",10), fg="#000000")+str(minimum(list)) 
minimum.pack(anchor="w") 

str(minimum(list))事情是不工作,因爲我得到一個錯誤索引列表超出範圍。

這是完整的代碼,但它是荷蘭語,所以我不知道你是否可以理解所有內容,但我真的希望有人能幫助我。

謝謝:)

代碼:

from Tkinter import * 
venster=Tk() 
lijst = [] 


#FUNCTIES 
def klaar(): 
## while True:      #Here i'm wondering how to get the last number in the list as well while you push 'klaar (ready)' instead of Volgende (next) At least this doesn't work 
##  e = invoer.get() 
##  lijst.append(e) 
     eersteFrame.grid_forget() 
     tweedeFrame.grid() 
     print "klaar" 
     return 
def afsluiten(): 
    venster.destroy() 
    print "afsluiten" 
    return 
def opnieuw(): 
    print "opnieuw" 
    tweedeFrame.grid_forget() 
    eersteFrame.grid 
    return 
def opslaan(): 
    print "opslaan" 
    return 
def volgende(): 
     while True: 
     e = invoer.get() 
     lijst.append(e) 
     print lijst 
     invoer.delete(0, END) 
     return 
from math import sqrt 

def gemiddelde(getallen): 
    return sum(getallen)/float(len(getallen)) 

def kwartiel_Q1(lijst): 
    list.sort(lijst) 
    x = len(lijst) 
    return lijst[x/4] 

def kwartiel_Q3(lijst): 
    list.sort(lijst) 
    x = len(lijst) 
    Q3 = lijst[x/-4] 
    return Q3 

def mediaan(lijst): 
    list.sort(lijst) 
    x = len(lijst) 
    return lijst[x/2] 


def minimum(getallen): 
    getallen.sort() 
    return getallen[0] 

def maximum(getallen): 
    getallen.sort() 
    return getallen[-1] 

def modus(lijst): 
    return max(set(lijst), key=lijst.count) 

def sd(lijst): 
    d2lijst=[] 
    lijst.sort() 
    gemiddelde = sum(lijst)/float(len(lijst)) 
    for i in lijst: 
     d = i - gemiddelde 
     d2 = d**2 
     d2lijst.append(d2) 
    somd2n = sum(d2lijst)/float(len(lijst)) 
    stdv = sqrt(somd2n) 
    return stdv 

#FRAME 
eersteFrame = Frame(master=venster) 
eersteFrame.pack() 
tweedeFrame = Frame(master=venster) 

#LABEL 
eersteLabel = Label(eersteFrame, text="Voer getal in en druk dan op\n 'Volgende', net zolang totdat u \nde getallen ingevoerd heb en \ndruk dan op 'Klaar'.", font=("Verdana",10), fg="#000000") 
eersteLabel.pack() 
derdeLabel = Label(tweedeFrame, text= "Dit zijn uw resultaten:", font=("Verdana",10), fg="#000000") 
derdeLabel.pack() 
aantal = Label(tweedeFrame, text="\nAantal getallen:", font=("Verdana",10), fg="#000000") 
aantal.pack(anchor="w") 
minimum = Label(tweedeFrame, text="Minumum:", font=("Verdana",10), fg="#000000")+str(minimum(lijst)) 
minimum.pack(anchor="w") 
maximum = Label(tweedeFrame, text="Maximum:", font=("Verdana",10), fg="#000000") 
maximum.pack(anchor="w") 
gemiddelde = Label(tweedeFrame, text="Gemiddelde:", font=("Verdana",10), fg="#000000") 
gemiddelde.pack(anchor="w") 
modus = Label(tweedeFrame, text="Modus:", font=("Verdana",10), fg="#000000") 
modus.pack(anchor="w") 
mediaan = Label(tweedeFrame, text="Mediaan:", font=("Verdana",10), fg="#000000") 
mediaan.pack(anchor="w") 
kwartiel1 = Label(tweedeFrame, text="Eerste Kwartiel:", font=("Verdana",10), fg="#000000") 
kwartiel1.pack(anchor="w") 
kwartiel3 = Label(tweedeFrame, text="Derde Kwartiel:", font=("Verdana",10), fg="#000000") 
kwartiel3.pack(anchor="w") 
standaarddeviatie = Label(tweedeFrame, text="Standaarddeviatie:\n",font=("Verdana",10), fg="#000000") 
standaarddeviatie.pack(anchor="w") 

#INVOERVELD 
invoer = Entry(eersteFrame, width=39) 
invoer.pack() 
invoer.get() 






#KNOPPEN 
Klaar = Button(eersteFrame, text="Klaar", width=10, command=klaar) 
Volgende = Button(eersteFrame, text="Volgende", width=10, command=volgende) 
Opnieuw = Button(tweedeFrame, text="Opnieuw", width=10, command=opnieuw) 
Opslaan = Button(tweedeFrame, text="Opslaan", width=10, command=opslaan) 
Afsluiten1 = Button(eersteFrame, width=10, text="Afsluiten", command=afsluiten) 
Afsluiten2 = Button(tweedeFrame, width=10, text="Afsluiten", command=afsluiten) 

Klaar.pack(anchor="se", side="right") 
Volgende.pack(anchor="s", side="right") 
Opnieuw.pack(anchor="se", side="right") 
Afsluiten1.pack(anchor="sw", side="left") 
Afsluiten2.pack(anchor="sw", side="left") 
Opslaan.pack(anchor="s", side="right") 

#VENSTER 
venster.title("Statistiek") 
venster.mainloop() 
+0

如果你得到關於指數的誤差超出範圍,考慮會發生什麼你'minimum'功能時'numbers'(或' getallen')是一個空的列表。 –

+0

不要重新發明輪子 - [min()'builtin](http://docs.python.org/library/functions.html#min)存在的原因。 –

回答

2

你函數名通過標籤名稱覆蓋。爲函數和標籤使用不同的名稱。

另外,你可以只使用內置min功能:

min(numbers) 
+0

感謝您的回答:)但是,我仍然收到一個錯誤'列表索引超出範圍'爲返回數字[0]行... –

+0

請參閱@ SimeonVisser關於當您有一個空列表時會發生什麼的評論。索引零不會存在。 'min'對於一個空列表也會失敗,但是'ValueError:min()arg是一個空序列'。你必須處理這種情況。 –