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

1 回答 1

2

您的函数名称被标签名称覆盖。为函数和标签使用不同的名称。

此外,您可以只使用内置min函数:

min(numbers)
于 2012-06-17T15:38:04.850 回答