【问题标题】:Getting traceback and AttributeError: 'NoneType' object has no attribute 'get' [duplicate]获取回溯和 AttributeError:“NoneType”对象没有属性“get”[重复]
【发布时间】:2014-03-21 17:25:17
【问题描述】:

所以我正在尝试使用 Tkinter 和 python 制作一个简单的计算器程序。我有一些用于加法和减法的通用代码,但我收到了这个错误。请指教,代码写在下面。

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
  File "C:\Users\**\workspace\calcApp\calcApp\guiCalc.py", line 21, in numClick
    input = int(entry.get())
AttributeError: 'NoneType' object has no attribute 'get'

guiCalc.py:

from tkinter import *

class Calc:
 def init():

  root = Tk()
  root.wm_title("Calculator")

  input = 0
  varIn = StringVar()
  varIn = ""
  labelText = StringVar()
  ans = ""
  ans2 = ""

  entry = Entry(root).grid()

  def numClick():
   input = int(entry.get()) 
   entry.delete(0, END)   


  def equalClick():
   if(entry.get()=="+"):
    ans = input + int(entry.get())
    label.configure(text=ans)
   if(entry.get()=="-"):
    ans2 = input-int(entry.get())
    label.configure(text = ans2)

  Button(root, text="+", command=numClick).grid()    
  Button(root, text="-", command=numClick).grid()
  Button(root, text="=", command =equalClick).grid()

  label = Label(root, text="")
  label.grid()
  root.mainloop()



Calc.init()

【问题讨论】:

标签: python user-interface attributes tkinter traceback


【解决方案1】:
entry = Entry(root).grid()

entry 在这里是None,因为grid 不返回任何东西。也许您打算这样做:

entry = Entry(root)
entry.grid()

【讨论】:

  • FGITW -- 领先我一两秒。
【解决方案2】:

是的,我是个新手,但让我分享一下我学到的东西。

在小部件的创建行中附加.grid() 在大多数情况下都可以完美地用于布局目的,但这不是一个好的做法。正确的做法是像凯文说的那样做一条新线。

【讨论】:

    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多