Python 3.x Tkinter treeview文本在客户端重新启动之前不可见
我有一个用python 3.5编写的程序,它扫描目录并将信息存储在SQLITE3数据库中。此信息可以显示在客户端的ttk.treeview中 这两个主要功能是1)“扫描”,将信息添加到数据库中;2)查看下面的文件(它只是从数据库中获取数据并在树视图中显示) 在扫描功能期间,第二个tkinter窗口打开,显示扫描内容的信息。如果我尝试在不重新启动的情况下使用viewFiles功能,则显示的数据不可见,但我知道数据在那里,因为我可以将其复制粘贴到文本文档中)。如果重新启动客户端,则在按下链接到viewFiles功能的按钮后,文本将正确显示 我想这一定是因为在扫描过程中打开了第二个窗口,所以焦距发生了变化,但我不确定,也找不到类似的案例可以借鉴Python 3.x Tkinter treeview文本在客户端重新启动之前不可见,python-3.x,tkinter,treeview,Python 3.x,Tkinter,Treeview,我有一个用python 3.5编写的程序,它扫描目录并将信息存储在SQLITE3数据库中。此信息可以显示在客户端的ttk.treeview中 这两个主要功能是1)“扫描”,将信息添加到数据库中;2)查看下面的文件(它只是从数据库中获取数据并在树视图中显示) 在扫描功能期间,第二个tkinter窗口打开,显示扫描内容的信息。如果我尝试在不重新启动的情况下使用viewFiles功能,则显示的数据不可见,但我知道数据在那里,因为我可以将其复制粘贴到文本文档中)。如果重新启动客户端,则在按下链接到vie
def viewFiles(self):
global dataTreeView
results = []
foldersContentsToView = yieldFoldersToView()
for dpath in foldersContentsToView:
sqlstring= "SELECT * FROM DBDATA WHERE directorypath=:dpath"
values = {"dpath": dpath}
[results.append(i) for i in databaseFunctions.getDBobject().returnSelectQueryResults(sqlstring, values)]
for e in results:
dataTreeView.insert('', 'end', values=list(e))
有人有什么想法吗?问题是,在通过查询数据库中的字段创建treeview的那一刻,正在设置列。但是,在第一次扫描之前,数据库中没有记录,因此在重新启动之前,列没有正确配置,在重新启动之后,数据就存在了,并且可以在创建treeview时查询数据 为了解决这个问题,我将列configure data移动到viewFiles函数中,如下所示:
def viewFiles(self):
global dataTreeView
audioDataTree['columns'] = returnListTableFields()
#Configure Columns
for column in listofdbtablefields():
dataTree.column(column,width=len(column)*10)
dataTree.heading(column, text=column)
dataTree.column(column, anchor='center')
#Hide First Column (TreeLabel)
dataTree.column('#0',width=0)
results = []
foldersContentsToView = yieldFoldersToView()
for dpath in foldersContentsToView:
sqlstring= "SELECT * FROM DBDATA WHERE directorypath=:dpath"
values = {"dpath": dpath}
[results.append(i) for i in databaseFunctions.getDBobject().returnSelectQueryResults(sqlstring, values)]
for e in results:
dataTreeView.insert('', 'end', values=list(e))
答案取决于树视图不可见的原因。是否已正确放置或网格化?如果是这样,也许您需要focus_get()或lift()。包装正确。执行viewFiles时,滚动条将激活,您可以上下滚动值集,甚至选择行。唯一的问题是你实际上看不到文本。除非重新启动客户端。我试着在树视图上使用focus_get()、lift()甚至focus_force(),但没有改变。。。