【问题标题】:get() from an Entry Box returns 'None' [duplicate]从条目框中获取()返回“无”[重复]
【发布时间】:2020-08-19 21:03:08
【问题描述】:

最近我开始使用 tkinter。我尝试创建成绩管理器,当我尝试保存输入框中的输入时,但我尝试的每一种方式,结果都是错误或“无”

 def check_value(self,Input_Name):
        Name = Input_Name.get()
        print(Name)
    def add_Student(self, window):
        print("Yes")
        Input_Name = tk.Entry(window, bg='blue').pack()
    
        Button(window, text="Show", command=lambda: self.check_value(Input_Name)).pack()

对于这段代码,以下错误是:

Tkinter 回调异常 Traceback(最近一次调用最后一次):文件“C:\ Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1520.0_x64__qbz5n2kfra8p0\lib\tkinter_init_.py", 第 1883 行,在 调用 返回 self.func(*args) 文件“C:/Users/User/PycharmProjects/pythonProject/main.py”,第 28 行,在 Button(window, text="Show", command=lambda: self.check_value(window.Input_Name)).pack() 文件 “C:/Users/User/PycharmProjects/pythonProject/main.py”,第 20 行,在 校验值 Name = Input_Name.get() AttributeError: 'NoneType' 对象没有属性 'get'

【问题讨论】:

  • InputName 参数创建时的样子
  • 即使我尝试使用 Name = input(Input_Name) 获取 Input_Name,结果也是 'None'

标签: python exception tkinter error-handling


【解决方案1】:

您试图将Input_Name 分配给小部件的.pack() 方法返回的结果,而不是分配给小部件本身。 .pack() 方法不返回任何内容。因此,您尝试从 Nonetype 对象而不是 tk.Entry 中 .get() 。

您需要先将tk.Entry 分配给Input_Name 变量,然后在变量上调用方法pack。下面是一个固定代码的例子:

def check_value(self,Input_Name):
    Name = Input_Name.get()
    print(Name)
def add_Student(self, window):
    print("Yes")
    Input_Name = tk.Entry(window, bg='blue')
    Input_Name.pack()
    Button(window, text="Show", command=lambda: self.check_value(Input_Name)).pack()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-12
    • 2018-08-31
    • 2018-04-26
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    相关资源
    最近更新 更多