AttributeError:'function'对象没有属性错误

时间:2013-11-22 19:16:06

标签: python python-3.x tkinter

#-*- coding: cp857 -*-

from tkinter import *

###########################################################
rt=Tk()    
rt.title("MY FILM ARCHIVE v1")    
rt.resizable(False, False)    
###########################################################  
def add():
    def addFilm():
        db = open(r"C:\Users\PC\Desktop\db.txt", "a+")
        add.enter.get()
        global film
        film=enter[addingform,"text"]
        db.write(film + "\n")
        db.flush()
        db.close()

    addingform=Tk()
    addingform.title("Add Film!")
    addingform.resizable(False,False)
    label=Label(addingform,text="Enter your's film:",fg="red",font=("Flux",15, "bold"))
    label.pack()
    enter=Entry(addingform)
    enter.pack()
    button=Button(addingform, text="Add!",command=addFilm, font=("Flux",15, "bold"))
    button.pack()

button=Button(text="Add Film!",command=add, font=("Flux",15, "bold"))
button.pack(expand="yes", anchor="center")

mainloop()

我按下按钮,我写电影然后再次按下按钮添加电影。我得到了AttributeError:'function'对象没有属性'enter'错误

1 个答案:

答案 0 :(得分:1)

函数中的局部变量作为该函数的属性不可见。对于嵌套范围,只需使用名称​​直接

def add():
    def addFilm():
        db = open(r"C:\Users\PC\Desktop\db.txt", "a+")
        global film
        film = enter.get()
        db.write(film + "\n")
        db.flush()
        db.close()

此处enter将作为闭包附加到addFilm(),Python会将父作用域enter附加到该函数以供以后解除引用。你需要存储返回的值;我猜想你想把它分配到film这里。