Tkinter:使用.get()的AttributeError

时间:2017-09-14 16:06:05

标签: python tkinter

我正在尝试从Tkinter Wiget中检索变量,但我遇到了此错误消息:

AttributeError: 'int' object has no attribute 'get'

这是小部件代码

JobNEntry = tkinter.Entry(menu, textvariable = tk.IntVar(JobNo))
JobNEntry.grid(row=2, column=2, sticky="W")

这是通话代码

JobNo=JobNo.get()

此外,我需要知道变量JobNo是否可写入文件。 提前致谢

3 个答案:

答案 0 :(得分:2)

get()方法是tkinter中几个小部件的一部分,而不是可以在普通intstr对象上使用的方法。必须在变量上调用get(),该变量是具有get()方法的窗口小部件对象,如Entry

您可能需要这样做:

JobNEntry.get()

这将从输入字段中获取当前值作为字符串。

如果要保存该字符串的值,可以。 Stack Overflow和Web上有几个教程详细介绍了如何将字符串保存到文件中。

查看您向我们展示的代码,您可能未正确创建IntVar()

请务必先定义IntVar(),然后将该变量设为textvariable

这样的事情:

JobNo = tk.IntVar()
JobNEntry = tkinter.Entry(menu, textvariable = JobNo)

答案 1 :(得分:1)

属性错误可能是因为您已经将变量JobNo初始化为' IntVar'

这是我提出的代码:

import tkinter as tkinter

menu=tkinter.Tk()
JobNo=tkinter.IntVar()
JobNEntry = tkinter.Entry(menu, textvariable = JobNo)
JobNEntry.grid(row=2, column=2, sticky="W")
JobNo=JobNo.get()
menu.mainloop()

您需要使用IntVar()

将JobNo初始化为整数变量
JobNo=tkinter.IntVar()

然后在Entrybox中使用它。 如果要在条目中添加一些字符串,则应初始化为StringVar() 初始化时,请确保在打开Tk窗口后执行此操作。(此处我将其放在menu = tkinter.Tk()之后)

答案 2 :(得分:0)

这样的事情:

from tkinter import *
from tkinter import ttk

def save_job_no():
    try:
        n = job_no.get()
    except TclError:
        status.config(text = "This is not an integer")
        return False
    status.config(text="")
    f = open("my_file.txt", "w")
    f.write(str(n))
    return True

root = Tk()

job_no = IntVar()
entry = ttk.Entry(root, width = 30, textvariable = job_no)
entry.grid()
label = ttk.Label(root, textvariable = job_no)
label.grid()
status = ttk.Label(root)
status.grid()
button = ttk.Button(root, text = "Write to a file", command = save_job_no)
button.grid()

root.mainloop()