问题描述
我正在尝试将功能 add()从模块 tab.py 导入到模块 treeimport.py 中以创建在从模块treeimport.py中获取用户的数据后,将NameError: name 'treeview' is not defined
模块tab.py在下面
from tkinter import ttk
from tkinter import *
window = Tk()
def tree():
col = ('Website','Email','Password','Security check')
treeview = ttk.Treeview(window,height=5,show='headings',columns=col)
treeview.column('Website',width=100,anchor=CENTER)
treeview.column('Email',anchor=CENTER)
treeview.column('Password',anchor=CENTER)
treeview.column('Security check',anchor=CENTER)
treeview.heading('Website',text='Website')
treeview.heading('Email',text='Email')
treeview.heading('Password',text='Password')
treeview.heading('Security check',text='Security check')
treeview.pack(side=TOP,fill=BOTH)
def add():
treeview.insert('','end',values=(website.get(),email.get(),passwd.get(),'YES'))
window.mainloop()
和treeimport模块在下面:
from tkinter import ttk
from tkinter import *
from tab import *
ask = Tk()
website = Entry(ask)
email = Entry(ask)
passwd = Entry(ask)
website.pack()
email.pack()
passwd.pack()
rec = Button(ask,text='ADD',command = add())
rec.pack()
ask.mainloop()
请帮助我解决这个问题。
解决方法
在这里,我实际上减少了导入外部文件并将其全部编译为单个代码的使用,并且工作正常。我使用some.txt
来确保在尝试此代码之前先创建一个空文件。
from tkinter import ttk
from tkinter import *
ask = Tk()
def tree():
window = Toplevel(ask)
col = ('Website','Email','Password','Security check')
treeview = ttk.Treeview(window,height=5,show='headings',columns=col)
treeview.column('Website',width=100,anchor=CENTER)
treeview.column('Email',anchor=CENTER)
treeview.column('Password',anchor=CENTER)
treeview.column('Security check',anchor=CENTER)
treeview.heading('Website',text='Website')
treeview.heading('Email',text='Email')
treeview.heading('Password',text='Password')
treeview.heading('Security check',text='Security check')
treeview.pack(side=TOP,fill=BOTH)
#opening the list
open_file = open('some.txt','r')
lines = open_file.readlines()
#populating the list from the file
for line in lines:
treeview.insert('','end',values=line)
def store():
#creating a list of data to be stored in file
vals = [website.get()+' ',email.get()+' ',passwd.get()+' ','Yes\n']
lines = open('some.txt','a')
lines.writelines(vals)
#clearing the entry boxes
website.delete(0,END)
email.delete(0,END)
passwd.delete(0,END)
#setting focus back on first window
website.focus_force()
website = Entry(ask)
email = Entry(ask)
passwd = Entry(ask)
website.pack()
email.pack()
passwd.pack()
rec = Button(ask,text='ADD',command=store)
rec.pack()
view = Button(ask,text='VIEW',command=tree)
view.pack()
ask.mainloop()
some.txt
www.google.com something@gmail.com stackoverflow Yes
请让我知道是否有任何错误或疑问。
欢呼
,我找到了解决方案。 但是我想使Treeview中的数据添加成为我正在搜索的后端任务。
from tkinter import ttk
from tkinter import *
window = Tk()
ask = Toplevel()
website = Entry(ask)
email = Entry(ask)
passwd = Entry(ask)
website.pack()
email.pack()
passwd.pack()
col = ('Website','Security check')
treeview = ttk.Treeview(window,columns=col)
treeview.column('Website',anchor=CENTER)
treeview.column('Email',anchor=CENTER)
treeview.column('Password',anchor=CENTER)
treeview.column('Security check',anchor=CENTER)
treeview.heading('Website',text='Website')
treeview.heading('Email',text='Email')
treeview.heading('Password',text='Password')
treeview.heading('Security check',text='Security check')
treeview.pack(side=TOP,fill=BOTH)
def add():
treeview.insert('',values=(website.get(),email.get(),passwd.get(),'YES'))
rec = Button(ask,command = add)
rec.pack()
ask.mainloop()
window.mainloop()