为了账号安全,请及时绑定邮箱和手机立即绑定

在 tkinter 条目小部件中输入的数据包含“NoneType”对象并且没有属性“get”

在 tkinter 条目小部件中输入的数据包含“NoneType”对象并且没有属性“get”

慕标5832272 2021-09-23 09:56:11
我正在尝试创建一个收集实验数据的程序。我已成功创建了一个包含标签和条目小部件的表。但是,当尝试通过收集输入的数据使条目小部件起作用时,我的脚本失败了。import tkinter as tkfrom PIL import ImageTk, Imageclass Window(tk.Frame):def __init__(self, master=None):   tk.Frame.__init__(self, master)                  self.master = master   self.init_window()def init_window(self):   self.master.title("Data Analyser")   tk.Label(self.master, text="Cell Number").grid(row=1, sticky=tk.W)   tk.Label(self.master, text="1").grid(row=2)    tk.Label(self.master, text="1").grid(row=2)         tk.Label(self.master, text="Treatment").grid(row=1, column=2)   Treatment_1 = tk.Entry(self.master).grid(row=2,column=2)   Treatment_2 = tk.Entry(self.master).grid(row=3,column=2)   tk.Button(self.master, text = "Submit", command = self.getInput).grid(row = 14, column = 2)def getInput(self):       global Treatment_Data   a = Treatment_1.get()   b = Treatment_2.get()   Treatment_Data = [a,b]root = tk.Tk()root.geometry("500x450")app = Window(root) root.mainloop()                                                                                                                                                               我希望上面的代码会生成一个名为“Treatment_Data”的全局变量,但不幸的是,当我单击“提交”小部件时收到以下错误消息: Traceback (most recent call last):    File "C:\Users\xxxx\lib\tkinter\__init__.py", line 1550, in __call__    return self.func(*args)    File "<ipython-input-134-2b5d212a0dcf>", line 47, in getInput       a = self.Treatment_1.get()  AttributeError: 'NoneType' object has no attribute 'get'任何澄清将不胜感激。
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您需要使用 self 将 Treatment_1 和 Treatment_2 作为类变量,然后才能在回调函数 getInput() 中访问它们。

评论中提到的另一件事是您需要将两部分分开 -

1. 创建一个 Entry Widget 和

2. 将其放置在网格中。

您应该创建一个 Entry 小部件并将其存储在 Treatment_1 中。完成后,您应该使用 Treatment_1 变量将小部件放置在网格中的所需位置。


import tkinter as tk

from PIL import ImageTk, Image


class Window(tk.Frame):

   def __init__(self, master=None):

      tk.Frame.__init__(self, master)               

      self.master = master

      self.init_window()

   def init_window(self):

      self.master.title("Data Analyser")

      tk.Label(self.master, text="Cell Number").grid(row=1, sticky=tk.W)

      tk.Label(self.master, text="1").grid(row=2) 

      tk.Label(self.master, text="1").grid(row=2)      

      tk.Label(self.master, text="Treatment").grid(row=1, column=2)

      self.Treatment_1 = tk.Entry(self.master)

      self.Treatment_2 = tk.Entry(self.master)

      self.Treatment_1.grid(row=2,column=2)

      self.Treatment_2.grid(row=3,column=2)

      tk.Button(self.master, text = "Submit", command = self.getInput).grid(row = 14, column = 2)

   def getInput(self):    

      global Treatment_Data

      a = self.Treatment_1.get()

      b = self.Treatment_2.get()

      Treatment_Data = [a,b]

      print(Treatment_Data)


root = tk.Tk()

root.geometry("500x450")

app = Window(root) 

root.mainloop()


查看完整回答
反对 回复 2021-09-23
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信