【问题标题】:Python Tkinter Entry Values Method ErrorsPython Tkinter 输入值方法错误
【发布时间】:2013-03-30 17:15:50
【问题描述】:

该代码旨在将一些内容写入文本文件中的一行。

from tkinter import *
Tag=0
x="txt.txt"
w=open(x,"w")
root=Tk()
win1=Frame(root)
Label(root,text="Tag").pack()
tagE=Entry(root)
tagE.pack()
def get_it():                    
    Tag=(tagE.get())                                                                       
v=Button(root,text="Submit",command=get_it)
v.pack()
win1.pack()
w.write("%s var=%s"%(Tag,"text"))
w.close()
root.mainloop()

Tag=(tagE.get()) 缩进的空格多于实际。当我运行此代码时,我将得到一个“AttributError:'NoneType' 对象没有属性'get',或者标签值将等于其原始值 0。非常感谢帮助。

【问题讨论】:

  • 你的例子中的缩进是错误的。

标签: python variables methods tkinter


【解决方案1】:

除了获取入口的值外,还得在同一个函数中写入文件中的值:

from tkinter import *

filename = "txt.txt"
root=Tk()
Label(root,text="Tag").pack()
tagE=Entry(root)
tagE.pack()

def get_it():
    w=open(filename, "w")
    tag = tagE.get()
    w.write("%s var=%s"%(tag,"text"))
    w.close()

v=Button(root,text="Submit",command=get_it)
v.pack()
root.mainloop()

由于您不使用Frame 作为任何小部件的父级,您可以直接使用根元素。附带说明一下,我建议您按照PEP8 中的建议对变量使用小写符号,并尝试使用更清晰的名称。

【讨论】:

    【解决方案2】:

    您误解了 Tkinter 的工作原理。您的打印语句将在您有机会单击按钮之前执行。您需要将您的打印声明放入get_it

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 2018-05-28
      • 2019-01-21
      • 2020-05-16
      相关资源
      最近更新 更多