如何让Tkinter条目小部件与普通的python输入

时间:2018-03-14 12:26:06

标签: python python-3.x user-interface tkinter tkinter-entry

我正在尝试获取Tkinter条目,“数据”以处理我设置的所有变量。现在我正在使用普通的python输入,但我正在尝试将我的项目转换为GUI项目。因此,当我取出数据输入并尝试使用Entry for data时,我得到的错误是没有拆分或排序属性等。我希望我的程序的GUI版本与终端版本一样工作。这可能吗?这是回答问题所需的所有代码:

# imports
from statistics import mode
from statistics import median
from tkinter import *

# The Code For The GUI
# class that makes the window
class Window(Frame):

   def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()

    def init_window(self):
        self.master.title("Data Analyzer To Go")
        self.pack(fill=BOTH, expand=1)
        analyzeButton = Button(self, text="Analyze Data")
        dataPrompt = Label(self, text="Please enter your data")
        global data
        data = Entry(self)
        analyzeButton.place(x=150, y=150)
        data.place(x=125, y=125)
        dataPrompt.place(x=125, y=100)

root = Tk()
root.geometry("400x300")
app = Window(root)
root.mainloop()

# variables
data = input("please enter your data set: ")
data = [int(n) for n in data.split(' ')]
data.sort()
dataLength = len(data)
dataInt = list(map(int, data))
dataTotal = sum(dataInt)
dataMean = dataTotal / dataLength
highNumber = max(data)
lowNumber = min(data)
dataRange = highNumber - lowNumber

我的目标是让Entry和Input一样。任何帮助是极大的赞赏!谢谢!

1 个答案:

答案 0 :(得分:1)

我修改了您的代码以获取data变量的字符串值。现在,您输入以空格分隔的输入字段中的数字,当您单击“分析数据”按钮时,它会将条目保存到global data变量中。按钮的command方法负责将条目数据放入该变量中。这样就不再需要使用input行了。 我在开头定义data=''有一个全局变量。正如旁注所说,我认为依靠全局变量并不是最好的做法。

data = ''

class Window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()

    def init_window(self):
        self.master.title("Data Analyzer To Go")
        self.pack(fill=BOTH, expand=1)
        analyzeButton = Button(self, text="Analyze Data", command=self.getData)
        dataPrompt = Label(self, text="Please enter your data")
        global data
        self.var=StringVar(self)
        e = Entry(self, textvariable=self.var)
        analyzeButton.place(x=150, y=150)
        e.place(x=125, y=125)
        dataPrompt.place(x=125, y=100)
    def getData(self):
        global data
        data = self.var.get()

root = Tk()
root.geometry("400x300")
app = Window(root)
root.mainloop()

# variables
#data = input("please enter your data set: ")
data = [int(n) for n in data.split(' ')]
data.sort()
dataLength = len(data)
dataInt = list(map(int, data))
dataTotal = sum(dataInt)
dataMean = dataTotal / dataLength
highNumber = max(data)
lowNumber = min(data)
dataRange = highNumber - lowNumber