在 Lazarus 0.9.28.2 项目中,我有一个TTreeView, 名称DirTree位于我的 Form( frmConvert) 上,但我想用所有目录树填充它,因为C:\.
像这样:
C:\ 目录树 http://i.imagehost.org/0185/cdirtree.png
当用户选择目录时,在第二个TTreeView名称为 的目录中FileTree,会显示该目录中的所有文件,但经过过滤后仅显示 PDF。
我还需要帮助来放置这些图标,因为对于最终用户来说更有组织性和友好性非常好。
问题
DirTree所有目录填充第一个 TTreeView( ),如图所示?FileTree所选目录中的文件填充第二个 TTreeview( ) DirTree?DirTree?我有从数据库填充的 TreeView,我正在尝试检测 TreeView 上的用户操作,以做出一些决定,即用户是否单击了父节点、子节点或子节点的子节点。请任何人帮助我做到这一点,如何才能做到这一点我检测到树视图上的用户操作
我想创建一个仅基于 html 和 css 的 ul li 树菜单,也许是一个小的 jQuery。
所以这是我的 html:
<div class="wfm">
<ul class="firstUl">
<li>
<span>Parent1</span>
<ul>
<li>
<span>Parent2</span>
<ul>
<li>
<span>Parent3</span>
<ul>
<li>
<span>Parent4</span>
<ul>
<li>
<span>Child4</span>
</li>
<li>
<span>Child4</span>
</li>
<li>
<span>Child4</span>
</li>
</ul>
</li>
<li>
<span>Parent4</span>
</li>
<li>
<span>Parent4</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
这是显示 ul 内容的 css 技巧:
.subParent,.subParent1,.subParent2,.subParent3{
display: none;
}
li:focus .subParent,li:focus .subParent1,li:focus .subParent2,li:focus .subParent3{
display: block;
}
Run Code Online (Sandbox Code Playgroud)
我的问题: 1:当我点击第一个父级时,所有树都会展开,而不仅仅是父级 2;2:我可以使用 css 隐藏 uldisplay:none并带回:focus事件,但如何折叠那棵树。
我需要能够在树视图(其中有多个选择)中获取所有选定项目的更新列表。
此示例:javafx2 中的树项选择事件
显示如何一次响应/识别一个选定的项目。有没有办法一次获得所有选定的项目?类似于下面假设的非工作代码:
ArrayList<TreeItem> selectedTreeItems = new ArrayList<>();
myTreeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
selectedTreeItems.clear();//reset the list. correct?
//get a new list of children of the root
ObservableList objects = myTreeView.getRoot().getChildren();
//loop to get the selected items.
for (int i = 0; i < objects.size(); i++) {
TreeItem object = (TreeItem) objects.get(i);
if (thisObjectIsSelected(object)) {
selectedTreeItems.add(object);
}
}
}
});
privatevoid thisObjectIsSelected(TreeItem item){
//what do I do here?
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何实现我想要的。任何帮助是极大的赞赏!
在 WPF 中,当你ListView用鼠标经过一个项目时会产生很好的高光效果,如下所示:

但是,这不会发生在TreeView. 我的问题很简单:如何为 a 中的项目启用相同的效果TreeView?
注意:我知道这些问题: WPF TreeView Highlight Row On Hover 在 WPF 中突出显示整个 TreeViewItem 行
但他们主要关心的是将高光行为扩展到整行,而我仍然无法弄清楚如何在单个上启用高光效果TreeViewItem(这对我来说已经足够了)
我正在使用bootstrap-treeview 1.2.0(来自Jon Miles)。
我的目标是将自定义数据属性添加到列表项的标记中,例如
<li class="list-group-item node-tree" data-id="100" data-type="user" ...>
Run Code Online (Sandbox Code Playgroud)
我试图遵循这些说明,请参见此处,这是我的JSON的一部分:
[{"text":"Root","icon":null,"data-id":1,"data-type":"branch","nodes":[{"text":"Steve","icon":null,"data-id":17, "data-type":"user","nodes":...
Run Code Online (Sandbox Code Playgroud)
对我来说,JSON看起来不错。但是我的数据属性都没有在标记中呈现。
有任何想法吗?
问题:我无法在 tkinter.ttk.Treeview 中的根节点旁边显示图标图像。下面是我使用的测试代码。它执行时没有错误,但图像没有出现在根节点的左侧。我尝试过使用图像文件的完整路径名,但这不起作用。另外,我尝试使用 PIL.ImageTk.PhotoImage 打开图像文件,但这也不起作用。相反,出现了如下所示的错误。
问题:如何让图标图像出现在 tkinter.ttk.Treeview 的根节点(或任何节点)的左侧?
测试代码:
import os
import tkinter as tk
import tkinter.ttk as ttk
from PIL import Image, ImageTk
class App(ttk.Frame):
def __init__(self, master, path):
ttk.Frame.__init__(self, master)
self.tree = ttk.Treeview(self)
ysb = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
xsb = ttk.Scrollbar(self, orient='horizontal', command=self.tree.xview)
self.tree.configure(yscroll=ysb.set, xscroll=xsb.set)
self.tree.heading('#0', text='Directory', anchor='w')
abspath = os.path.abspath(path)
i = './icon/Home-icon_16.gif'
root_pic = tk.PhotoImage(file=i)
#root_pic = ImageTk.PhotoImage(i)
root_node = self.tree.insert('', 'end', text=abspath, open=True, image=root_pic)
l1_node = self.tree.insert(root_node, 'end', text='level 1', open=True)
l2_node = …Run Code Online (Sandbox Code Playgroud) 我在 Python 2.7 中的 Tkinter 中想要的是以下网格布局:
然而,有一次,我开始使用grid()函数而不是pack()函数,运行脚本时没有任何显示。以下是我所坚持的:
import Tkinter, ttk
class App(Tkinter.Frame):
def __init__(self,parent):
Tkinter.Frame.__init__(self, parent, relief=Tkinter.SUNKEN, bd=2)
self.parent = parent
self.grid(row=0, column=0, sticky="nsew")
self.menubar = Tkinter.Menu(self)
try:
self.parent.config(menu=self.menubar)
except AttributeError:
self.tk.call(self.parent, "config", "-menu", self.menubar)
self.tree = ttk.Treeview(self.parent)
self.tree.grid(row=0, column=0, sticky="nsew")
self.yscrollbar = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
self.yscrollbar.grid(row=0, column=1, sticky='nse')
self.tree.configure(yscrollcommand=self.yscrollbar.set)
self.yscrollbar.configure(command=self.tree.yview)
if __name__ == "__main__":
root = Tkinter.Tk()
root.title("MyApp")
app = App(root)
app.pack()
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我遇到了如何将我的sqlite3数据库中的所有记录输出到tkinter treeview.It 中的问题。它只输出中的最后一条记录,db并且记录也没有出现在为其指定的列中。该print方法将所有db记录打印到我的终端,但不输出treeview小部件的所有记录。
欢迎您提出建议以实现这一目标
from tkinter import ttk
import tkinter as tk
import sqlite3
def connect():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS profile(id INTEGER PRIMARY KEY,
First TEXT, Surname TEXT)")
conn.commit()
conn.close()
def View():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
cur.execute("SELECT * FROM profile")
rows = cur.fetchall()
for row in rows:
print(row) # it print all records in the database
tree.insert("", tk.END, values=row) …Run Code Online (Sandbox Code Playgroud) 所以我有一个集合Name,Code,Id和List与节点类型ServiceTypeDto这样的模式:
public class ServiceTypeDto
{
public long Id
public string Code
public string Name
public List<ServiceTypeDto> ChildrenList
}
Run Code Online (Sandbox Code Playgroud)
我有一个返回ServiceTypeDtos列表的方法,如下所示:

我有一个ChildernList暴露ServiceTypeDtos的。
这就是我尝试在ViewModel 中执行此操作的方式:
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ServiceTypeService.Dto;
using ServiceTypeService.Interface;
using ShowServiceType.Interfaces;
using ShowServiceType.Utils;
namespace ShowServiceType.ViewModel
{
class MainWindowViewModel : ViewModelBase
{
public string _name, _code;
public long _id;
public List<ServiceTypeDto> _childrenList = new List<ServiceTypeDto>();
/// <summary>
/// Create Services for work …Run Code Online (Sandbox Code Playgroud)