如何让 Tkinter 条目小部件与普通 python 输入一样工作
How can I get a Tkinter entry widget to work the same as a normal python input
我正在尝试获取 Tkinter 条目,'data' 以使用我设置的所有变量。现在我正在使用正常的 python 输入,但我正在尝试将我的项目转换为 GUI 项目。因此,当我取出数据输入并尝试使用数据条目时,我收到错误消息,指出没有拆分或排序属性等。我希望我的程序的 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
同样,我的目标是让输入执行与输入相同的操作。任何帮助是极大的赞赏!谢谢!
我修改了您的代码以获取 data
变量的字符串值。现在,您在输入字段中输入由 space 分隔的数字,当您单击“分析数据”按钮时,它会将输入保存到您的 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
我正在尝试获取 Tkinter 条目,'data' 以使用我设置的所有变量。现在我正在使用正常的 python 输入,但我正在尝试将我的项目转换为 GUI 项目。因此,当我取出数据输入并尝试使用数据条目时,我收到错误消息,指出没有拆分或排序属性等。我希望我的程序的 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
同样,我的目标是让输入执行与输入相同的操作。任何帮助是极大的赞赏!谢谢!
我修改了您的代码以获取 data
变量的字符串值。现在,您在输入字段中输入由 space 分隔的数字,当您单击“分析数据”按钮时,它会将输入保存到您的 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