python-3.x - Tkinter 在 Treeview 小部件中插入一个 Combobox

标签 python-3.x combobox treeview tkinter ttk

例如,让我们使用如下类创建 Treeview 小部件:

class FiltersTree:
    def __init__(self, master, filters):
        self.master = master
        self.filters = filters
        self.treeFrame = Frame(self.master)
        self.treeFrame.pack()
        self._create_treeview()
        self._populate_root()

    def _create_treeview(self):
        self.dataCols = ['filter', 'attribute']
        self.tree = ttk.Treeview(self.master, columns = self.dataCols, displaycolumns = '#all')

填充根,像往常一样插入 child 。在代码块的末尾,您可以使用 Combo 对象看到我想在树中放置 Combobox 的位置:
    def _populate_root(self):
        # a Filter object
        for filter in self.filters:
            top_node = self.tree.insert('', 'end', text=filter.name)

            # a Field object
            for field in filter.fields:
                mid_node = self.tree.insert(top_node, 'end', text = field.name)

                # insert field attributes
                self.insert_children(mid_node, field)

    def insert_children(self, parent, field):
        name = self.tree.insert(parent, 'end', text = 'Field name:',
                         values = [field.name])
        self.tree.insert(parent, 'end', text = 'Velocity: ', 
                         values = [Combo(self)]) # <--- Combo object
        ...

接下来是 Combo 的类定义。我理解它的方式,组合框小部件继承自并且必须放置在来自 ttk 的 Labelframe 小部件中:
class Combo(ttk.Frame):
    def __init__(self, master):
        self.opts = ('opt1', 'opt2', 'etc')
        self.comboFrame = ttk.Labelframe(master, text = 'Choose option')
        self.comboFrame.pack()
        self.combo = ttk.Combobox(comboFrame, values=self.opts, state='readonly')
        self.combo.current(1)
        self.combo.pack()

那么这是完全错误的吗?我希望能够在 Treeview 小部件中更改单位(例如 m/s、ft/s 等)。

有什么建议吗?

what i want

最佳答案

TreeView 小部件不支持嵌入式小部件。 values 的值属性被视为字符串。

关于python-3.x - Tkinter 在 Treeview 小部件中插入一个 Combobox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755176/

相关文章:

c# - DataView rowfilter 始终包含集合中的最后一个

c# - 将 WPF TreeView 绑定(bind)到多个列表

algorithm - 确定 Treeview 中的最小变化

python - json.dump 一个 concurrent.futures.Future()?

python - Pandas 堆栈日期矩阵值

python - 如何将 %s 变成 {0}、{1} ...不那么笨重?

python - 如何使用 Lib 'dateutil' 转换日期字符串?

jquery - 使用 jQuery 通过组合框的名称获取组合框的选定文本?

Combo 打开时的 Jquery 事件

c# - Winform Treeview 通过标签查找节点