将数据插入 ttk.treeview 小部件到特定列
Insert data into ttk.treeview widget to specific column
我想将数据插入到我的 ttk 树视图小部件的特定列中。用户只输入一个扫描器,所以我必须解析每个代码以确定它进入哪一列。现在,parseData()
函数在按下 Enter 时运行,所以我想处理那里的插入。
我曾尝试使用 treeview.set(item, column, new_value)
,但在插入空白行时它会崩溃。
class MainGUI:
def __init__(self, master):
self.master = master
self.data_view = ttk.Treeview(master)
self.data_view['columns'] = ["Date", "Item 1", "Item 2", "Item 3", "Item 4", "Source", "Destination", "Cart #",]
self.data_view['show'] = 'headings'
self.data_view.heading("Date", text="Date")
self.data_view.heading("Item 1", text="Item 1")
self.data_view.heading("Item 2", text="Item 2")
self.data_view.heading("Item 3", text="Item 3")
self.data_view.heading("Item 4", text="Item 4")
self.data_view.heading("Source", text="Source")
self.data_view.heading("Destination", text="Destination")
self.data_view.heading("Cart #", text="Cart #")
self.data_view.pack()
self.scan_entry = ttk.Entry(master)
self.scan_entry.pack()
self.scan_entry.bind('<Return>', self.parseEntry)
self.scan_entry.focus()
self.close_button = tk.Button(master, text="Close", command=self.adminLogout, width=15, height=5)
self.close_button.pack(anchor='se')
def parseEntry(self,event):
#INSERT self.scan_entry.get() into #ITEM 1 column, not date volumn
#If contains certain characters, maybe insert into Source or Destination
self.scan_entry.delete(0,'end')
理想情况下,我希望能够将空白树插入到任何列,或者在某些情况下抓取所选内容,然后根据输入更改值。
您必须在不想填写的列中插入空行。
并且您可以使用 in
来检查您在 self.scan_entry.get()
中查找的字符:
from tkinter import *
import tkinter.ttk as ttk
class MainGUI:
def __init__(self, master):
self.master = master
self.data_view = ttk.Treeview(master)
self.data_view['columns'] = ["Date", "Item 1", "Item 2", "Item 3", "Item 4", "Source", "Destination", "Cart #",]
self.data_view['show'] = 'headings'
self.data_view.heading("Date", text="Date")
self.data_view.heading("Item 1", text="Item 1")
self.data_view.heading("Item 2", text="Item 2")
self.data_view.heading("Item 3", text="Item 3")
self.data_view.heading("Item 4", text="Item 4")
self.data_view.heading("Source", text="Source")
self.data_view.heading("Destination", text="Destination")
self.data_view.heading("Cart #", text="Cart #")
self.data_view.pack()
self.scan_entry = ttk.Entry(master)
self.scan_entry.pack()
self.scan_entry.bind('<Return>', self.parseEntry)
self.scan_entry.focus()
self.close_button = ttk.Button(master, text="Close", command=lambda:print('want to close app'))
self.close_button.pack(anchor='se')
def parseEntry(self,event):
#self.scan_entry.delete(0,'end')
self.data_view.insert('',END,values=('',self.scan_entry.get(),'','','','','',''))
#If contains certain characters, maybe insert into Source or Destination
if 'a' in self.scan_entry.get():
self.data_view.insert('',END,values=('','','','','',self.scan_entry.get(),self.scan_entry.get(),''))
if __name__=='__main__':
master=Tk()
maingui=MainGUI(master)
master.mainloop()
我想将数据插入到我的 ttk 树视图小部件的特定列中。用户只输入一个扫描器,所以我必须解析每个代码以确定它进入哪一列。现在,parseData()
函数在按下 Enter 时运行,所以我想处理那里的插入。
我曾尝试使用 treeview.set(item, column, new_value)
,但在插入空白行时它会崩溃。
class MainGUI:
def __init__(self, master):
self.master = master
self.data_view = ttk.Treeview(master)
self.data_view['columns'] = ["Date", "Item 1", "Item 2", "Item 3", "Item 4", "Source", "Destination", "Cart #",]
self.data_view['show'] = 'headings'
self.data_view.heading("Date", text="Date")
self.data_view.heading("Item 1", text="Item 1")
self.data_view.heading("Item 2", text="Item 2")
self.data_view.heading("Item 3", text="Item 3")
self.data_view.heading("Item 4", text="Item 4")
self.data_view.heading("Source", text="Source")
self.data_view.heading("Destination", text="Destination")
self.data_view.heading("Cart #", text="Cart #")
self.data_view.pack()
self.scan_entry = ttk.Entry(master)
self.scan_entry.pack()
self.scan_entry.bind('<Return>', self.parseEntry)
self.scan_entry.focus()
self.close_button = tk.Button(master, text="Close", command=self.adminLogout, width=15, height=5)
self.close_button.pack(anchor='se')
def parseEntry(self,event):
#INSERT self.scan_entry.get() into #ITEM 1 column, not date volumn
#If contains certain characters, maybe insert into Source or Destination
self.scan_entry.delete(0,'end')
理想情况下,我希望能够将空白树插入到任何列,或者在某些情况下抓取所选内容,然后根据输入更改值。
您必须在不想填写的列中插入空行。
并且您可以使用 in
来检查您在 self.scan_entry.get()
中查找的字符:
from tkinter import *
import tkinter.ttk as ttk
class MainGUI:
def __init__(self, master):
self.master = master
self.data_view = ttk.Treeview(master)
self.data_view['columns'] = ["Date", "Item 1", "Item 2", "Item 3", "Item 4", "Source", "Destination", "Cart #",]
self.data_view['show'] = 'headings'
self.data_view.heading("Date", text="Date")
self.data_view.heading("Item 1", text="Item 1")
self.data_view.heading("Item 2", text="Item 2")
self.data_view.heading("Item 3", text="Item 3")
self.data_view.heading("Item 4", text="Item 4")
self.data_view.heading("Source", text="Source")
self.data_view.heading("Destination", text="Destination")
self.data_view.heading("Cart #", text="Cart #")
self.data_view.pack()
self.scan_entry = ttk.Entry(master)
self.scan_entry.pack()
self.scan_entry.bind('<Return>', self.parseEntry)
self.scan_entry.focus()
self.close_button = ttk.Button(master, text="Close", command=lambda:print('want to close app'))
self.close_button.pack(anchor='se')
def parseEntry(self,event):
#self.scan_entry.delete(0,'end')
self.data_view.insert('',END,values=('',self.scan_entry.get(),'','','','','',''))
#If contains certain characters, maybe insert into Source or Destination
if 'a' in self.scan_entry.get():
self.data_view.insert('',END,values=('','','','','',self.scan_entry.get(),self.scan_entry.get(),''))
if __name__=='__main__':
master=Tk()
maingui=MainGUI(master)
master.mainloop()