def __init__(self, master, on_selected=None, **kwargs):
tk.Frame.__init__(self, master, **kwargs)
self._cache = {}
self.tree = ttk.Treeview(self)
self.tree['show'] = 'headings'
self.tree['columns'] = ('subject', 'tests', 'status', 'bug')
self.tree.heading('subject', text='Subject')
self.tree.heading('tests', text='Test')
self.tree.heading('status', text='Status')
self.tree.heading('bug', text='Bug')
self.tree.column('subject', width=60)
self.tree.column('tests', width=150)
self.tree.column('status', width=40)
self.tree.column('bug', width=10)
self.tree.bind('<<TreeviewSelect>>', on_selected)
ysb = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
self.tree.grid(row=0, column=0, sticky='nsew')
ysb.grid(row=0, column=1, sticky='ns')
self.tree.configure(yscroll=ysb.set)
python类Treeview()的实例源码
def __init__(self, root):
tk.Frame.__init__(self, root, bg='#7F7F7F')
ttk.Style().layout('Filter.Treeview', [
('Treeview.entry', {
'border': '1', 'children':
[('Treeview.padding', {
'children':
[('Treeview.treearea', {'sticky': 'nswe'})], 'sticky': 'nswe'
})],
'sticky': 'nswe'
})
])
self.frame = tk.Frame(self)
self.tree = ttk.Treeview(self.frame, show='tree', style='Filter.Treeview')
# for p in root.app.protocols:
# print p
# fixme
def bk():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
bk_list = []
bk_list.append(value)
bk = Bookmarks(tree, io=IO())
bk._insert_bookmarks(bk_list)
return bk
def show_report(self,list):
self.report=Toplevel(root)
self.report.title("Report")
self.report.minsize(width=600,height=500)
self.report_tree=ttk.Treeview(self.report,show='headings')
self.report_tree["columns"]=("Course", "Activity")
self.report_tree.column("Course", minwidth=350, stretch=True)
self.report_tree.column("Activity", minwidth=50, stretch=True)
self.report_tree.heading("Course", text="Course")
self.report_tree.heading("Activity", text="Activity")
for i in list:
self.report_tree.insert('', 'end',values=(i[1], i[2]))
self.ok=Button(self.report, text=" OK ", font="helvetica 12", fg="black", relief=RAISED,command=self.report.destroy)
self.report_tree.pack(fill=BOTH, expand=True, padx=(20, 20), pady=(20, 20),side=TOP)
self.ok.pack(expand=False,padx=20,pady=10,anchor=SE,side=BOTTOM)
def set_treeview_properties(self, element):
"""
Set the information text for the Treeview *element*.
"""
# set class property
self.treeview.set(element.treeview_id, "class", element.treeview_class_name)
# add the check marks for barcodes/variants
if "variants" in element.labels:
self.treeview.set(element.treeview_id, "variants", u"\u2713")
else:
self.treeview.set(element.treeview_id, "variants", "")
if "barcodes" in element.labels:
self.treeview.set(element.treeview_id, "barcodes", u"\u2713")
else:
self.treeview.set(element.treeview_id, "barcodes", "")
self.treeview.set(element.treeview_id, "class", element.treeview_class_name)
def populate_tree(self, element, parent_id=""):
"""
Recursively populate the Treeview.
Also populates the *id_cfgstrings*.
"""
# insert into the Treeview
element.treeview_id = self.treeview.insert(parent_id, "end", text=element.name, open=True)
# add id-element pair to dictionary
self.element_dict[element.treeview_id] = element
# set information fields
self.set_treeview_properties(element)
# populate for children
if element.children is not None:
for child in element.children:
self.populate_tree(child, parent_id=element.treeview_id)
def cb_autofill_form(self, rig_target, event):
"""Auto-fill bookmark fields with details
of currently selected Treeview entry.
:param event: not used?
:type event:
:raises: none
:returns: none
"""
self.selected_bookmark = self.tree.focus()
values = self.tree.item(self.selected_bookmark).get('values')
self._clear_form(rig_target)
cbb_mode = "cbb_mode{}".format(rig_target)
txt_frequency = "txt_frequency{}".format(rig_target)
txt_description = "txt_description{}".format(rig_target)
self.params[cbb_mode].insert(0, values[1])
self.params[txt_frequency].insert(0, values[0])
self.params[txt_description].insert(0, values[2])
def bk():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
bk_list = []
bk_list.append(value)
bk = Bookmarks(tree, io=IO())
bk._insert_bookmarks(bk_list)
return bk
def test_save_gqrx_len():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert (len(bk.bookmarks.row_list) == 1)
def test_save_gqrx_freq():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
int(bk.bookmarks.row_list[0][0])
def test_save_gqrx_tag():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert (bk.bookmarks.row_list[0][4] == "Untagged")
def test_save_gqrx_comment():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert(isinstance(bk.bookmarks.row_list[0][1], basestring))
def test_import_rig_remote():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.load = MagicMock()
bk.load.return_value = "test"
bk._import_rig_remote("test")
bk.load.assert_called_once_with("test", ",", silent=False)
def test_import_gqrx():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_load = MagicMock()
bk.bookmarks.csv_load.return_value = "test"
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([" 28800000"," standing spike "," Narrow FM "," 10000"," Untagged"])
bk._insert_bookmarks = MagicMock()
bk._import_gqrx("test")
bk._insert_bookmarks.assert_called_once_with([['28800000', 'FM', 'standing spike']])
def test_save_gqrx_len():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert (len(bk.bookmarks.row_list) == 1)
def test_save_gqrx_freq():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
int(bk.bookmarks.row_list[0][0])
def test_save_gqrx_mode():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert (bk.bookmarks.row_list[0][2] in CBB_MODES)
def test_save_gqrx_tag():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert (bk.bookmarks.row_list[0][4] == "Untagged")
def test_save_gqrx_comment():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_save = MagicMock()
bk.bookmarks.return_value = None
bk._save_gqrx("test")
assert(isinstance(bk.bookmarks.row_list[0][1], basestring))
def test_import_gqrx():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
value = [u'5,955,000', u'AM', u'found on 18.34 jan 08 2015', u'O']
tree.insert("",0,values = value)
bk = Bookmarks(tree, io=IO())
bk.bookmarks.csv_load = MagicMock()
bk.bookmarks.csv_load.return_value = "test"
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([""])
bk.bookmarks.row_list.append([" 28800000"," standing spike "," Narrow FM "," 10000"," Untagged"])
bk._insert_bookmarks = MagicMock()
bk._import_gqrx("test")
bk._insert_bookmarks.assert_called_once_with([['28800000', 'FM', 'standing spike']])
def create_file_treeview(self):
self.fileTreeView = Treeview(self.main_window)
self.fileTreeYScrollbar = Scrollbar(self.main_window, orient='vertical', command=self.fileTreeView.yview)
self.fileTreeXScrollbar = Scrollbar(self.main_window, orient='horizontal', command=self.fileTreeView.xview)
self.fileTreeView.configure(yscroll=self.fileTreeYScrollbar.set, xscroll=self.fileTreeXScrollbar.set)
self.fileTreeView.grid(row=self.fileTreeRow, column=self.fileTreeCol, sticky=NS, rowspan=3)
self.fileTreeYScrollbar.grid(row=self.fileTreeRow, column=self.fileTreeScrollbarCol, sticky=NS, rowspan=3)
self.fileTreeXScrollbar.grid(row=self.horizontalScrollbarRow, column=self.fileTreeCol, sticky=EW)
self.fileTreeView.tag_configure('red', background=self.redColor)
self.fileTreeView.tag_configure('green', background=self.greenColor)
self.fileTreeView.tag_configure('yellow', background=self.yellowColor)
# hide it until needed
self.fileTreeView.grid_remove()
self.fileTreeYScrollbar.grid_remove()
self.fileTreeXScrollbar.grid_remove()
# Text areas
def playback(self, table):
if(self.VEHICLE_NAME == ""):
self.TextArea.insert(END, "Please register/log in to a vehicle.\n")
return
# Open database connection
db = MySQLdb.connect("localhost","root","toor",self.VEHICLE_NAME )
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "SELECT * FROM %s ;" % table
count = 0
try:
# Execute the SQL command
cursor.execute(sql)
# Update the Treeview
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
for row in results:
cmd = "cansend %s %s#%s.%s%s.%s%s%s%s.%s" % (q.get(), row[1], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10])
for line in execute([cmd]):
count = count + 1
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
def create(self, **kwargs):
return ttk.Treeview(self.root, **kwargs)
def _setup_widgets(self):
msg = ttk.Label(wraplength="4i", justify="left", anchor="n",
padding=(10, 2, 10, 6),
text=("Ttk is the new Tk themed widget set. One of the widgets it "
"includes is a tree widget, which can be configured to "
"display multiple columns of informational data without "
"displaying the tree itself. This is a simple way to build "
"a listbox that has multiple columns. Clicking on the "
"heading for a column will sort the data by that column. "
"You can also change the width of the columns by dragging "
"the boundary between them."))
msg.pack(fill='x')
container = ttk.Frame()
container.pack(fill='both', expand=True)
# XXX Sounds like a good support class would be one for constructing
# a treeview with scrollbars.
self.tree = ttk.Treeview(columns=tree_columns, show="headings")
vsb = ttk.Scrollbar(orient="vertical", command=self.tree.yview)
hsb = ttk.Scrollbar(orient="horizontal", command=self.tree.xview)
self.tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
self.tree.grid(column=0, row=0, sticky='nsew', in_=container)
vsb.grid(column=1, row=0, sticky='ns', in_=container)
hsb.grid(column=0, row=1, sticky='ew', in_=container)
container.grid_columnconfigure(0, weight=1)
container.grid_rowconfigure(0, weight=1)
def __place_widgets(self):
# header frame and its widgets
hframe = ttk.Frame(self)
lbtn = ttk.Button(hframe, style='L.TButton', command=self._prev_month)
rbtn = ttk.Button(hframe, style='R.TButton', command=self._next_month)
self._header = ttk.Label(hframe, width=15, anchor='center')
# the calendar
self._calendar = ttk.Treeview(show='', selectmode='none', height=7)
# pack the widgets
hframe.pack(in_=self, side='top', pady=4, anchor='center')
lbtn.grid(in_=hframe)
self._header.grid(in_=hframe, column=1, row=0, padx=12)
rbtn.grid(in_=hframe, column=2, row=0)
self._calendar.pack(in_=self, expand=1, fill='both', side='bottom')
def create(self, **kwargs):
return ttk.Treeview(self.root, **kwargs)
def setUp(self):
support.root_deiconify()
self.tv = ttk.Treeview(padding=0)
def __init__(self, root):
tk.Frame.__init__(self, root, bg='#10253F')
self.packet = None
self.label_border = tk.Frame(self, bg='#7F7F7F', height=35)
self.label_border.pack_propagate(False)
self.label = tk.Label(self.label_border, bg='#a68c7a', fg='#10253F', anchor=tk.W, padx=10, font='TkDefaultFont 12 bold')
self.scroll = ttk.Scrollbar(self, style='Vertical.TScrollbar', orient=tk.VERTICAL)
ttk.Style().layout('Fields.Treeview', [('Treeview.treearea', {'sticky': 'nswe'})])
ttk.Style().configure('Fields.Treeview', background='#10253F', foreground='#FFFFFF')
self.frame = tk.Frame(self, bg='#10253F')
self.tree = ttk.Treeview(self.frame, show='tree', yscroll=self.scroll.set, style='Fields.Treeview')
self.tree.tag_configure('layer', background='#20354F')
self.scroll.config(command=self.tree.yview)
self.opened_layers = set()
self.tree.bind('<Control-c>', self.copy)
# TODO
# self.menu = tk.Menu(self)
# self.menu.add_command(label='Insert As Filter', command=lambda: root.searchbar.insert(self.packet.getattr()))
def __init__(self, root):
tk.Canvas.__init__(self, root, bg='#FEF9F4', highlightthickness=0)
ttk.Style().layout('Packets.Treeview', [('Treeview.treearea', {'sticky': 'nswe'})])
ttk.Style().configure('Packets.Treeview', foreground='#000000', background='#FEF9F4')
self.packets = {}
self.tree_frame = tk.Frame(self, bg='black')
self.tree = ttk.Treeview(self.tree_frame, height=0, style='Packets.Treeview', show='headings')
self.tree['columns'] = ['no', 'time', 'src', 'dst', 'protocol', 'length']
cdata = [
('Index', False, 50, tk.E),
('Time', False, 100, tk.CENTER),
('Source', True, 120, tk.W),
('Destination', True, 120, tk.W),
('Protocol', True, 60, tk.CENTER),
('Length', False, 80, tk.E)
]
self.size = 0
for i, c in enumerate(cdata):
cname = self.tree['columns'][i]
self.tree.heading(cname, text=c[0])
self.tree.column(cname, stretch=c[1], width=c[2], anchor=c[3])
for i in range(12): self.tree.tag_configure('n%i' % i, background=colors_normal[i % 2])
self.scroll = ttk.Scrollbar(self, style='Vertical.TScrollbar', orient=tk.VERTICAL, command=self.tree.yview)
self.tree.configure(yscrollcommand=self.scroll.set)
self.img = tk.PhotoImage(file='CF_back.gif').subsample(2, 2)
self.background = self.create_image((350, 160), image=self.img, anchor=tk.CENTER)
self.bind('<Configure>', self.recenter_bg)
self.rb = False
def scaleup(self, event):
'''The Treeview widget won't auto-adjust the row height,
so requires manual resetting upon font changing'''
self.font['size']+=1
self.style.configure('SearchBox.Treeview', rowheight=self.font.metrics('linespace')+1)