#-*- 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'错误
答案 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
这里。