def scaledown(self, event):
self.font['size']-=1
self.style.configure('SearchBox.Treeview', rowheight=self.font.metrics('linespace')+1)
python类Treeview()的实例源码
def menu_selectall(self):
"""
Add all elements in the Treeview to the selection.
"""
for k in self.element_dict.keys():
self.treeview.selection_add(k)
def delete_element(self, tree_id):
"""
Delete element with Treeview id *tree_id* from the tree, from the element
dictionary, and from the associated data structure. Recursively
deletes all children of *tree_id*.
The tree should be refreshed using :py:meth:`refresh_tree` after
each deletion. This is the responsibility of the caller.
"""
#if self.treeview.exists(tree_id):
if tree_id in self.element_dict:
# recursively delete children
if self.element_dict[tree_id].children is not None:
for child in self.element_dict[tree_id].children:
self.delete_element(child.treeview_id)
# check if deleting the root element
if self.root_element.treeview_id == tree_id:
# clear the root element
self.root_element = None
else:
try:
# remove the element from its parent's list of children
self.element_dict[tree_id].parent.remove_child_id(tree_id)
except AttributeError:
raise AttributeError("Non-root element lacks proper parent")
# delete the element from the dictionary
del self.element_dict[tree_id]
def refresh_treeview(self):
"""
Clears the Treeview and repopulates it with the current contents of the tree.
"""
# clear the entries in the Treeview
for x in self.treeview.get_children():
self.treeview.delete(x)
# clear the id-element dictionary
# elements may be given new id's after repopulation
self.element_dict.clear()
# repopulate
if self.root_element is not None:
self.populate_tree(self.root_element)
def get_selected_elements(self):
"""
Returns a list of elements that are currently selected in the Treeview.
If no elements are selected, it returns an empty list.
"""
return [self.get_element(x) for x in self.treeview.selection()]
def test_save_gqrx():
tree = ttk.Treeview(columns=("frequency",
"mode",
"description",
"lockout"),
displaycolumns=("frequency",
"mode",
"description"),
show="headings")
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, list))
assert (len(bk.bookmarks.row_list) == 0)
def __init__(self, master, xml=None, heading_text=None, heading_anchor=None, padding=None, cursor=None, takefocus=None, style=None):
Frame.__init__(self, master, class_="XML_Viwer")
self._vsb = Scrollbar(self, orient=VERTICAL)
self._hsb = Scrollbar(self, orient=HORIZONTAL)
kwargs = {}
kwargs["yscrollcommand"] = lambda f, l: autoscroll(self._vsb, f, l)
kwargs["xscrollcommand"] = lambda f, l: autoscroll(self._hsb, f, l)
if style is not None:
kwargs["style"] = style
if padding is not None:
kwargs["padding"] = padding
if cursor is not None:
kwargs["cursor"] = cursor
if takefocus is not None:
kwargs["takefocus"] = takefocus
self._treeview = Treeview(self, **kwargs)
if heading_text is not None:
if heading_anchor is not None:
self._treeview.heading("#0", text=heading_text, anchor=heading_anchor)
else:
self._treeview.heading("#0", text=heading_text)
self._treeview.bind("<<TreeviewOpen>>", self._on_open)
self._treeview.bind("<<TreeviewClose>>", self._on_close)
# Without this line, horizontal scrolling doesn't work properly.
self._treeview.column("#0", stretch= False)
self._vsb['command'] = self._treeview.yview
self._hsb['command'] = self._treeview.xview
self._treeview.grid(column=0, row=0, sticky=N+S+W+E)
self._vsb.grid(column=1, row=0, sticky=N+S)
self._hsb.grid(column=0, row=1, sticky=E+W)
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self._element_tree = None
self._item_ID_to_element = {}
if xml is not None:
self.parse_xml(xml)
def LoadFirstCfGScreen(project_name):
top = Tix.Toplevel()
top.protocol("WM_DELETE_WINDOW", on_closing)
top.title("Table InfExtractor")
top.geometry('{}x{}'.format(500, 500))
topframe = Tix.Frame(top,height=10)
topframe.pack()
frame = Tix.Frame(top)
frame.pack()
topframe2 = Tix.Frame(top,height=10)
topframe2.pack()
middleframe = Tix.Frame(top)
middleframe.pack()
bottomframe2 = Tix.Frame(top,height=10)
bottomframe2.pack( side = Tix.BOTTOM )
bottomframe = Tix.Frame(top)
bottomframe.pack( side = Tix.BOTTOM )
name = Tix.StringVar()
label_name = Tix.Label(frame,textvariable=name)
name.set("Name of task:")
label_name.pack(side = Tix.LEFT)
name2 = Tix.StringVar()
label_name2 = Tix.Label(frame,textvariable=name2)
name2.set(project_name)
label_name2.pack(side = Tix.LEFT)
ConfigureDB = Tix.Button(frame, text="Configure Database", fg="black",command=lambda: ConfigureDatabaseScreen(project_name))
ConfigureDB.pack( side = Tix.LEFT)
clearTable = Tix.Button(frame, text="Clear DB Table", fg="black",command = lambda: ClearDBTables(project_name))
clearTable.pack( side = Tix.LEFT)
vars = FileManipulationHelper.loadVariables(project_name)
Lb1 = ttk.Treeview(middleframe,columns=40,height=19)
Lb1.pack()
size = Lb1.size()
for var in vars:
Lb1.insert('', 'end', var, text=var)
rules = FileManipulationHelper.loadRules(project_name,var)
for rule in rules:
Lb1.insert(var, 'end', text=rule)
#Lb1.insert(size,rule)
size = Lb1.size()
AddVariables = Tix.Button(bottomframe, text="Add Variable", fg="black", command=lambda:AddVariable(project_name, Lb1))
AddVariables.pack(side=Tix.LEFT)
AddRules = Tix.Button(bottomframe, text="Add Rule", fg="black",command=lambda:AddEditRule(project_name,Lb1))
AddRules.pack( side = Tix.LEFT)
DeleteRule = Tix.Button(bottomframe, text="Delete Rule", fg="black",command=lambda:RemoveRule(Lb1,project_name))
DeleteRule.pack( side = Tix.LEFT)
EditRuleA = Tix.Button(bottomframe, text="Edit Rule", fg="black",command=lambda:EditRule(project_name,Lb1))
EditRuleA.pack( side = Tix.LEFT)
#MoveUpRule = Tix.Button(bottomframe, text="Move Up Rule", fg="black",command=lambda:MoveRuleUp(Lb1))
#MoveUpRule.pack( side = Tix.LEFT)
#MoveDownRule =Tix.Button(bottomframe, text="Move Down Rule", fg="black",command=lambda:MoveRuleDown(Lb1))
#MoveDownRule.pack( side = Tix.LEFT)
skip_val = 0
Next = Tix.Button(bottomframe, text="Next", bg="green", command=lambda:MakeWorkingScreen(rules, top,project_name,skip_val))
Next.pack( side = Tix.LEFT)