我正在使用 Tix 在 Python 中编写一个小程序,该程序构建并显示具有复选框功能的某些文件夹的树视图(只有其中包含某个 xml 文件的文件夹)。每个项目都是可以选择(选中)的文件夹或子文件夹。我为此使用了 CheckList 和 Hlist
基于这个答案:我设法用复选框显示了我想要的文件夹结构。
问题是,每当检查父项时,我都需要自动检查嵌套项,这样我就不需要遍历同一个父项下的每个项。我在使用 Tix 的文档时遇到了很多麻烦。
互联网上似乎存在关于对象和方法的相互矛盾的信息,并且它们往往因信息来源而异。我几乎可以肯定 Hlist 中没有内置功能可以启用此“自动检查”功能,因此如果我错了,请纠正我,我必须自己开发它。
对此有任何提示或想法吗?我将发布所涉及的代码片段和文件夹树视图
首先,我创建清单并找到我感兴趣的目录:
def startCheckList(self):
self.cl = Tix.CheckList(self.testsFrame, browsecmd=self.selectItem, width=600, height=600)
self.cl.hlist.configure(indent=20, pady=2, padx=2, bg='#eef4fa', relief=GROOVE, font=self.customFont)
self.cl.pack()
for root, dirs, files in os.walk(EA.TESTSFOLDER):
for aFile in files:
(fileName, extension) = os.path.splitext(aFile)
if (fileName == EA.TESTNAME):
self.testPaths.append(root)
获得文件夹列表后,我将关联的元素添加到要显示的 Hlist
def display_paths(self):
for path in self.testPaths:
L = []
path2list(L, path)
self.create_recursive(L)
self.cl.autosetmode()
如果存在元素,我不会创建新条目
def create_recursive(self, list):
path = '.'.join(list)
if path:
if self.cl.hlist.info_exists(path) == '1':
pass
elif self.cl.hlist.info_exists(path) == '0':
if list:
self.create_recursive(list[:-1])
self.cl.hlist.add(path, text=list[-1])
self.cl.setstatus(path, "off")
你将如何进行?