我有这个问题,我需要使用唯一的按钮来显示其他函数的值,在这种情况下是计算。使用其文本输入字段时显示第一个函数,但不显示另一个函数。
我试过复制,使用相同的代码期望更改名称。
import tkinter as tk
from functools import partial
n_num = list(map(int, input('Enter mean numbers: ').split()))
n = len(n_num)
get_sum = sum(n_num)
mean = get_sum / n
print("Mean / Average is: " + str(mean))
def mean_result (label_mean_result,num):
n_num = list(map(int,num.get()))
n = len(n_num)
get_sum = sum(n_num)
mean = get_sum /n
label_mean_result.config(text=f"Mean Result = {mean}")
return
def median_result (label_median_result,num):
n_num = list(map(int,num.get()))
n = len(n_num)
n_num.sort()
if n % 2 == 0:
median1 = n_num[n // 2]
median2 = n_num[n // 2 - 1]
median = (median1 + median2) / 2
else:
median = n_num[n // 2]
label_median_result.config(text=f"Median Result = {median}")
#print("Median is: " + str(median))
return
root = tk.Tk()
root.geometry('400x200+100+200')
root.title('Final program')
## Mean input and output
meanInput = tk.StringVar()
labelMean = tk.Label(root, text="Mean input:").grid(row=1, column=0)
labelResult = tk.Label(root)
labelResult.grid(row=7, column=2)
entryNum1 = tk.Entry(root, textvariable=meanInput).grid(row=1, column=2)
mean_result = partial(mean_result, labelResult, meanInput)
buttonCal = tk.Button(root, text="Calculate", command=mean_result).grid(row=3, column=0)
#####
medianInput = tk.StringVar()
labelMedian = tk.Label(root, text="Median input:").grid(row=2, column=0)
labelResult2 = tk.Label(root)
labelResult2.grid(row=7, column=2)
entryNum2 = tk.Entry(root, textvariable=medianInput).grid(row=2, column=2)
median_result= partial(median_result, labelResult2, medianInput)
root.mainloop()
在这种情况下,当我使用唯一的按钮从两个函数输入值时,我期望结果是计算。因此,我很想知道如何将多个功能连接到一个按钮并显示它们的结果。例如,第一个函数显示“平均函数”结果,但是;单击计算按钮时,第二个函数“中值”未连接和显示。
import tkinter as tk
from statistics import median, mode, stdev
class Calculator(tk.Frame):
"""Calculate mean median mode and standard deviation"""
def __init__(self, parent, *args, **kwargs):
#setup tkinter frame
tk.Frame.__init__(self, parent, *args, **kwargs)
parent = parent
self.makeWidgets()
def makeWidgets(self):
"""make and pack various widgets"""
self.meanLabel = tk.Label(self, text="")
self.medianLabel = tk.Label(self, text="")
self.modeLabel = tk.Label(self, text="")
self.sdLabel = tk.Label(self, text="")
self.entry = tk.Entry(self)
self.calcuateButton = tk.Button(self, text="Calculate!", command = self.calculate)
self.meanLabel.pack()
self.medianLabel.pack()
self.modeLabel.pack()
self.sdLabel.pack()
self.entry.pack()
self.calcuateButton.pack()
def calculate(self):
self.listOfNumbers = self.entry.get()
#get what is inputed into the entry widget
self.listOfNumbers = self.listOfNumbers.split(' ')
#split the input string by spaces
for ind, i in enumerate(self.listOfNumbers):
#convert each item in the list of strings of numbers to ints
self.listOfNumbers[ind] = int(i)
#calculate!
self.calcMean()
self.calcMedian()
self.calcMode()
self.calcSd()
def calcMean(self):
"""calculate the mean"""
mean = sum(self.listOfNumbers)/len(self.listOfNumbers)
self.meanLabel.config(text='mean = ' + str(mean))
return mean
def calcMedian(self):
"""calculate the median"""
med = median(self.listOfNumbers)
self.medianLabel.config(text='median = ' + str(med))
return med
def calcMode(self):
"""calculate the mode"""
Mode = max(set(self.listOfNumbers), key=self.listOfNumbers.count)
self.modeLabel.config(text='mode = ' + str(Mode))
return Mode
def calcSd(self):
"""calculate the standard deviation"""
sd = stdev(self.listOfNumbers)
self.sdLabel.config(text='Standard deviation = ' + str(sd))
return sd
if __name__ == '__main__':
root = tk.Tk()
root.title('calculate mean, median, mode and standard deviation')
root.geometry('400x200')
Calculator(root).pack(side="top", fill="both", expand=True)
root.mainloop()
现在这可能与您所拥有的有很大不同,但这是可扩展的,您可以根据自己的兴趣抽象事物。我只是觉得它更具可读性
您在示例中计算了中位数,只是认为使用统计模块会更清晰。Mean已经很干净了
我希望这有帮助 :)
编辑; 包括模式和 sd;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句