我正在将模块导入另一个模块以在tkinter中创建树视图,但它向我显示错误NameError:未定义名称“ treeview”

问题描述

我正在尝试将功能 add()从模块 tab.py 导入到模块 treeimport.py 中以创建从模块treeimport.py中获取用户的数据后,将,并在按钮后将该数据插入模块tab.py中的treeview窗口小部件。单击具有功能add()的ADD ,但它显示一个错误 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()