В моем treeview (python tkinter), когда я добавляю данные, я хочу, чтобы данные добавлялись на основе родительского имени (tkinter)

#python #tkinter #treeview

#python #tkinter #просмотр дерева

Вопрос:

В моем представлении дерева я ввожу значения вручную, я бы хотел, чтобы они отображались следующим образом:

 Parent name1

child 1 

child 2 
   
child 3 

parent name 2 

child 1 

child 2 
 

Данные, которые я ввожу, должны добавляться как дочерние к соответствующему родительскому элементу каждый раз, когда я ввожу (введенное родительское имя должно быть сверено с уже существующими родительскими именами в treeview).
Примечание: Данные вводятся в TreeView только в том случае, если частота отказов является числовым значением.

 #treeview
my_tree = ttk.Treeview(tree_frame,height= 15, yscrollcommand=tree_scroll.set)
my_tree.pack()

tree_scroll.config(command=my_tree.yview)

my_tree['columns'] = ("fun"," rate", "cv", "id")

my_tree.column("#0",width=100)
my_tree.column("fun",anchor=W,width=100)
my_tree.column("rate",anchor=W,width=100)
my_tree.column("cv",anchor=W,width=120)
my_tree.column("id",anchor=W,width=120)

my_tree.heading("#0",text='name',anchor=W)
my_tree.heading("fun", text='Fun', anchor=W)
my_tree.heading("rate",text='rate',anchor=W)
my_tree.heading("cv", text='Cv',anchor=W)
my_tree.heading("id",text='id',anchor=W)

main.mainloop()
 

Ответ №1:

Во — первых , все ieX это None потому , что это результат .grid(...) . Вам нужно разделить строку следующим образом:

 ie1 = Entry(input_frame, width = 50).grid(row=0, column=1,padx=5,pady=5)
 

в две строки:

 ie1 = Entry(input_frame, width = 50)
ie1.grid(row=0, column=1,padx=5,pady=5)
 

Затем вам нужно изменить add() , чтобы вставить родительский и дочерний элементы отдельно:

 def add():
    global count
    a = ie3.get()
    try:
        float(a)
        component = ie1.get()
        if not my_tree.exists(component):
            # insert parent
            my_tree.insert(parent="", index="end", iid=component, text=component)
        # insert child
        my_tree.insert(parent=component, index='end', iid=count, values=(ie2.get(),ie3.get(),ie4.get(),ie5.get()))                                                                                         
        count  = 1
    except ValueError:
        mesg()
 

Комментарии:

1. Большое вам спасибо за вашу помощь. Я только начинаю свой путь в программировании, и ваша помощь действительно мотивирует меня продолжать идти вперед. Я ценю ваше время, потраченное на изучение кода и помощь новичкам вроде меня.

2. @balaji Если это поможет, мы будем признательны, если вы примете это как ответ, щелкнув галочку рядом с ответом.

3. Упс, я здесь новичок. Я этого не знал. Я сделал это сейчас. Еще раз спасибо