我有这段代码,实际上,我正在尝试 self ,因为我不熟悉它:
import tkinter
class AvakinLife:
def __init__(self):
self.targetFile = 'D:\AVAKIN_PROJECT\SOFTWARE\order.txt'
self.cursor = ["arrow", "circle", "clock", "cross", "dotbox", "pirate"]
self.background = 'black'
self.fg = '#00ff00'
self.font = 'bold'
self.mod = 'w+'
self.GUI = tkinter.Tk()
self.GUI.title('Avakin Life Resources Generator')
self.GUI.geometry('350x200')
self.GUI.configure(background='black', cursor=self.cursor[5])
def post(self):
f = open(self.targetFile, self.mod)
with f as writer:
# Here is my problem
writer.write("email> " + email_Entry.get() + '\r')
writer.close()
def create_GUI(self):
emailLabel = tkinter.Label(master=self.GUI, text='Account e-mail: ', background=self.background, fg=self.fg)
emailLabel.grid(row=0, column=0, pady=4)
email_Entry = tkinter.Entry(master=self.GUI, background=self.background, fg=self.fg, font=self.font)
email_Entry.grid(row=0, column=1)
send = tkinter.Button(master=self.GUI, text='Send', background=self.background, fg=self.fg, font=self.font,width=10, command=AL.post)
send.grid(row=4, column=0, pady=8)
self.GUI.mainloop()
if __name__ == '__main__':
AL = AvakinLife()
AL.create_GUI()
错误是:
writer.write("email> " + email_Entry.get.get() + '\r')
NameError: name 'email_Entry' is not defined
而且,我不知道问题出在哪里。我通过互联网搜索,找不到答案。
答案 0 :(得分:0)
您在create_GUI()方法中定义的名为email_entry的变量是局部变量。 因此,您将无法使用该方法之外的变量。 为了解决这个问题,您只需要将该局部变量设置为类属性即可。 self关键字就是这样做的。 通过这样做:
self.email_Entry = tkinter.Entry(master=self.GUI, background=self.background, fg=self.fg, font=self.font)
email_Entry现在是一个类属性,因此,也可以从其他方法中调用它。 这样,您的post()方法将变为:
def post(self):
f = open(self.targetFile, self.mod)
with f as writer:
writer.write("email> " + self.email_Entry.get() + '\r')
writer.close()