本文整理汇总了Python中tkinter.ttk.Treeview.grid方法的典型用法代码示例。如果您正苦于以下问题:Python Treeview.grid方法的具体用法?Python Treeview.grid怎么用?Python Treeview.grid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tkinter.ttk.Treeview
的用法示例。
在下文中一共展示了Treeview.grid方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: per
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class per():
def __init__(self,data,y,v='план'):
w=Toplevel()
w.wm_title('Доп')
w.columnconfigure(0,weight=1)
w.rowconfigure(0,weight=1)
years=sorted(data.keys())
cols=data['2013']['degurs'] # ЗАГЛУШКА : список дежурных
self.t=Treeview(w,columns=cols)
for c in cols:
self.t.heading(c,text=c)
self.t.column(c,width=65,anchor='center')
self.t.tag_configure('табель',background='green')
self.t.tag_configure('ош',background='red')
#self.t.tag_configure('табель',background='green')
self.scrX=Scrollbar(w,orient='horizontal',command=self.t.xview)
self.scrY=Scrollbar(w,orient='vertical',command=self.t.yview)
self.t['xscrollcommand']=self.scrX.set
self.t['yscrollcommand']=self.scrY.set
self.t.grid(row=0,column=0,sticky=N+S+E+W)
self.scrX.grid(row=1,column=0,sticky=E+W)
self.scrY.grid(row=0,column=1,sticky=N+S)
for y in years:
x=self.t.insert('','end',text=y)
eeY=[]
for m in ['01','02','03','04','05','06','07','08','09','10','11','12']:
d0=data[y]
if m not in d0: continue
d=d0[m]
rez=dict()
tag=''
if v=='авто':
if 'табель' in d['degur']:
vv='табель'
tag=vv
else:
vv='план'
elif v=='табель':
if 'табель' not in d['degur']:
vv='план'
tag='ош'
else:
vv=v
tag=vv
else:
vv=v
for j,s in d['degur'][vv].items():
rez[j]=analyse2(s,d)
NUL=(0,0,0,0,0,0,0)
ee=[rez.get(j,NUL)[0]-rez.get(j,NUL)[3]+rez.get(j,NUL)[4] for j in cols]
eeY.append(ee)
self.t.insert(x,'end',text=m,values=[x or '-' for x in ee],tag=tag)
eeY=[sum(x) for x in zip(*eeY)]
self.t.insert(x,'end',text='итого',values=eeY,tag='Y')
示例2: DeviceToFrame
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class DeviceToFrame(CopilotInnerFrame):
def __init__(self, master, config, state):
super(DeviceToFrame, self).__init__(master, config)
self._state = state
if self._state.action == 'copy':
self._frame_lbl['text'] = 'Copy To Directory'
elif self._state.action == 'delete':
self._frame_lbl['text'] = 'Delete From Directory'
self._next_btn['command'] = self._next_cmd
self._tree = Treeview(self._master, columns=('size'))
self._tree.heading('size', text='Size')
self._tree.grid(row=1, column=0, columnspan=3, sticky='nsew')
self._tree.configure(yscrollcommand=self._sb.set)
self._sb['command'] = self._tree.yview
self._item_paths = {}
self._populate_tree(self._state.to_device.part().mount())
def _next_cmd(self):
cur_item = self._tree.focus()
cur_path = self._item_paths.get(cur_item, '')
if cur_path != '':
self._state.device_to_path = cur_path
self._new_state_window(CopyFileFrame, self._state)
def _populate_tree(self, tree_root):
self._item_paths = {}
def insert_path(tree, path, parent_id):
dirs = [e for e in scandir(path) if e.is_dir()]
dirs.sort(key=lambda e: e.name)
for d in dirs:
dir_name = d.name
dir_id = '{}-{}'.format(parent_id, dir_name)
dir_path = os.path.join(path, dir_name)
tree.insert(parent_id, 'end', dir_id, text=dir_name, tags=('dir'))
self._item_paths[dir_id] = dir_path
try:
insert_path(tree, dir_path, dir_id)
except:
pass
insert_path(self._tree, tree_root, '')
tree = self._tree
tree.tag_configure('dir', font=self._config.item_font)
tree.tag_configure('file', font=self._config.item_font)
tree.tag_configure('file_odd', background='light grey')
示例3: CreateUI
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
def CreateUI(self, classInstance):
self.headers = [
"Customers",
"Inter-arrival time",
"Arrival time",
"Service time",
"Waiting time in queue",
"Time when service begins",
"Time when service ends",
"Time customer spends in system",
"Idle time of server"
]
self.contents =[]
# populates the table from other class to generate the tkinter table
def compilelist(classInstance):
self.contents.append(classInstance.intarrival())
self.contents.append(classInstance.arrival())
self.contents.append(classInstance.service())
self.contents.append(classInstance.queuewait())
self.contents.append(classInstance.servbegin())
self.contents.append(classInstance.servend())
self.contents.append(classInstance.custspend())
self.contents.append(classInstance.idle())
return self.contents
# Calling the function
compilelist(classInstance)
self.rearrange = []
for row in zip(*self.contents):
self.rearrange.append(row)
self.headdata = []
for x in range(len(self.contents[0])):
self.headdata.append(x+1)
header_lists = []
tv = Treeview(self)
tv['columns'] = (self.headers)
for x in range(len(self.headers)):
tv.heading("#%s"%x, text=self.headers[x], anchor='center')
tv.column ("#%s"%x, anchor='center', width="150")
tv.grid(sticky = (N,S,W,E))
self.treeview = tv
self.grid_rowconfigure(0, weight = 1)
self.grid_columnconfigure(0, weight = 1)
示例4: DialogPluginManager
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class DialogPluginManager(Toplevel):
def __init__(self, mainWin, modulesWithNewerFileDates):
super(DialogPluginManager, self).__init__(mainWin.parent)
self.ENABLE = _("Enable")
self.DISABLE = _("Disable")
self.parent = mainWin.parent
self.cntlr = mainWin
# copy plugins for temporary display
self.pluginConfig = PluginManager.pluginConfig
self.pluginConfigChanged = False
self.uiClassMethodsChanged = False
self.modulesWithNewerFileDates = modulesWithNewerFileDates
parentGeometry = re.match("(\d+)x(\d+)[+]?([-]?\d+)[+]?([-]?\d+)", self.parent.geometry())
dialogX = int(parentGeometry.group(3))
dialogY = int(parentGeometry.group(4))
self.title(_("Plug-in Manager"))
frame = Frame(self)
# left button frame
buttonFrame = Frame(frame, width=40)
buttonFrame.columnconfigure(0, weight=1)
addLabel = Label(buttonFrame, text=_("Find plug-in modules:"), wraplength=60, justify="center")
addLocalButton = Button(buttonFrame, text=_("Locally"), command=self.findLocally)
ToolTip(addLocalButton, text=_("File chooser allows selecting python module files to add (or reload) plug-ins, from the local file system."), wraplength=240)
addWebButton = Button(buttonFrame, text=_("On Web"), command=self.findOnWeb)
ToolTip(addWebButton, text=_("Dialog to enter URL full path to load (or reload) plug-ins, from the web or local file system."), wraplength=240)
addLabel.grid(row=0, column=0, pady=4)
addLocalButton.grid(row=1, column=0, pady=4)
addWebButton.grid(row=2, column=0, pady=4)
buttonFrame.grid(row=0, column=0, rowspan=2, sticky=(N, S, W), padx=3, pady=3)
# right tree frame (plugins already known to arelle)
modulesFrame = Frame(frame, width=700)
vScrollbar = Scrollbar(modulesFrame, orient=VERTICAL)
hScrollbar = Scrollbar(modulesFrame, orient=HORIZONTAL)
self.modulesView = Treeview(modulesFrame, xscrollcommand=hScrollbar.set, yscrollcommand=vScrollbar.set, height=7)
self.modulesView.grid(row=0, column=0, sticky=(N, S, E, W))
self.modulesView.bind('<<TreeviewSelect>>', self.moduleSelect)
hScrollbar["command"] = self.modulesView.xview
hScrollbar.grid(row=1, column=0, sticky=(E,W))
vScrollbar["command"] = self.modulesView.yview
vScrollbar.grid(row=0, column=1, sticky=(N,S))
modulesFrame.columnconfigure(0, weight=1)
modulesFrame.rowconfigure(0, weight=1)
modulesFrame.grid(row=0, column=1, columnspan=4, sticky=(N, S, E, W), padx=3, pady=3)
self.modulesView.focus_set()
self.modulesView.column("#0", width=120, anchor="w")
self.modulesView.heading("#0", text=_("Name"))
self.modulesView["columns"] = ("author", "ver", "status", "date", "update", "descr", "license")
self.modulesView.column("author", width=100, anchor="w", stretch=False)
self.modulesView.heading("author", text=_("Author"))
self.modulesView.column("ver", width=50, anchor="w", stretch=False)
self.modulesView.heading("ver", text=_("Version"))
self.modulesView.column("status", width=50, anchor="w", stretch=False)
self.modulesView.heading("status", text=_("Status"))
self.modulesView.column("date", width=70, anchor="w", stretch=False)
self.modulesView.heading("date", text=_("File Date"))
self.modulesView.column("update", width=50, anchor="w", stretch=False)
self.modulesView.heading("update", text=_("Update"))
self.modulesView.column("descr", width=200, anchor="w", stretch=False)
self.modulesView.heading("descr", text=_("Description"))
self.modulesView.column("license", width=70, anchor="w", stretch=False)
self.modulesView.heading("license", text=_("License"))
classesFrame = Frame(frame)
vScrollbar = Scrollbar(classesFrame, orient=VERTICAL)
hScrollbar = Scrollbar(classesFrame, orient=HORIZONTAL)
self.classesView = Treeview(classesFrame, xscrollcommand=hScrollbar.set, yscrollcommand=vScrollbar.set, height=5)
self.classesView.grid(row=0, column=0, sticky=(N, S, E, W))
hScrollbar["command"] = self.classesView.xview
hScrollbar.grid(row=1, column=0, sticky=(E,W))
vScrollbar["command"] = self.classesView.yview
vScrollbar.grid(row=0, column=1, sticky=(N,S))
classesFrame.columnconfigure(0, weight=1)
classesFrame.rowconfigure(0, weight=1)
classesFrame.grid(row=1, column=1, columnspan=4, sticky=(N, S, E, W), padx=3, pady=3)
self.classesView.focus_set()
self.classesView.column("#0", width=200, anchor="w")
self.classesView.heading("#0", text=_("Class"))
self.classesView["columns"] = ("modules")
self.classesView.column("modules", width=500, anchor="w", stretch=False)
self.classesView.heading("modules", text=_("Modules"))
# bottom frame module info details
moduleInfoFrame = Frame(frame, width=700)
moduleInfoFrame.columnconfigure(1, weight=1)
self.moduleNameLabel = Label(moduleInfoFrame, wraplength=600, justify="left",
font=font.Font(family='Helvetica', size=12, weight='bold'))
self.moduleNameLabel.grid(row=0, column=0, columnspan=4, sticky=W)
self.moduleAuthorHdr = Label(moduleInfoFrame, text=_("author:"), state=DISABLED)
self.moduleAuthorHdr.grid(row=1, column=0, sticky=W)
self.moduleAuthorLabel = Label(moduleInfoFrame, wraplength=600, justify="left")
self.moduleAuthorLabel.grid(row=1, column=1, columnspan=3, sticky=W)
#.........这里部分代码省略.........
示例5: ComponentsDumpWindow
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class ComponentsDumpWindow(Toplevel):
def __init__(self, application, barNumber = None, **kwargs):
Toplevel.__init__(self)
self.application = application
self.barNumber = barNumber
self.fromLabel = Label(self)
self.fromLabel.grid(column = 0, row = 0)
self.fromVar = StringVar()
self.fromEntry = Entry(self, textvariable = self.fromVar, justify = RIGHT)
self.fromEntry.grid(column = 1, row = 0, sticky = W + E)
self.columnconfigure(1, weight = 1)
self.toLabel = Label(self)
self.toLabel.grid(column = 2, row = 0)
self.toVar = StringVar()
self.toEntry = Entry(self, textvariable = self.toVar, justify = RIGHT)
self.toEntry.grid(column = 3, row = 0, sticky = W + E)
self.columnconfigure(3, weight = 1)
self.stepLabel = Label(self, text = "dx:")
self.stepLabel.grid(column = 4, row = 0)
self.stepVar = StringVar()
self.stepEntry = Entry(self, textvariable = self.stepVar, justify = RIGHT)
self.stepEntry.grid(column = 5, row = 0, sticky = W + E)
self.columnconfigure(5, weight = 1)
self.calculateButton = Button(self, text = "Рассчитать",
command = self.onCalculateButtonClicked)
self.calculateButton.grid(column = 6, row = 0, columnspan = 2)
# Таблица рассчитанных значений
columns = ("№ стержня", "x", "Nx", "U", "σ")
self.tree = Treeview(self, columns = columns, displaycolumns = columns)
self.tree.grid(column = 0, row = 1, columnspan = 7, sticky = W + N + E + S)
self.tree.column("#0", width = 0, stretch = 0)
# Настройки отображения таблицы
self.tree.column(columns[0], anchor = CENTER)
self.tree.heading(columns[0], text = columns[0], anchor = CENTER)
for x in columns[1:]:
self.tree.column(x, anchor = E)
self.tree.heading(x, text = x, anchor = E)
self.rowconfigure(1, weight = 1)
self.bind("<Destroy>", self.onWindowDestroy)
self.updateTitles()
self.onConstructionChanged(False)
def updateTitles(self):
if self.barNumber is None:
titleDescStr = ""
xDescStr = "global"
else:
titleDescStr = "%sСтержень (%d)" % (self.application.nameDelim, self.barNumber)
xDescStr = "local"
self.title("%s%sКомпоненты%s" \
% (self.application.name, self.application.nameDelim, titleDescStr))
self.fromLabel["text"] = "От x(" + xDescStr + "):"
self.toLabel["text"] = "До x(" + xDescStr + "):"
def onWindowDestroy(self, event):
self.application.onWindowDestroy(self)
def onCalculateButtonClicked(self):
try:
self.calculate()
except Exception as e:
self.showError(e)
def onConstructionChanged(self, constructed = True):
if not constructed:
for var in self.fromVar, self.toVar, self.stepVar:
var.set("0")
return
try:
self.calculate()
except Exception:
#.........这里部分代码省略.........
示例6: DialogOpenArchive
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class DialogOpenArchive(Toplevel):
def __init__(self, mainWin, openType, filesource, filenames, title, colHeader, showAltViewButton=False):
parent = mainWin.parent
super(DialogOpenArchive, self).__init__(parent)
self.parent = parent
self.showAltViewButton = showAltViewButton
parentGeometry = re.match("(\d+)x(\d+)[+]?([-]?\d+)[+]?([-]?\d+)", parent.geometry())
dialogX = int(parentGeometry.group(3))
dialogY = int(parentGeometry.group(4))
self.accepted = False
self.transient(self.parent)
frame = Frame(self)
treeFrame = Frame(frame, width=500)
vScrollbar = Scrollbar(treeFrame, orient=VERTICAL)
hScrollbar = Scrollbar(treeFrame, orient=HORIZONTAL)
self.treeView = Treeview(treeFrame, xscrollcommand=hScrollbar.set, yscrollcommand=vScrollbar.set)
self.treeView.grid(row=0, column=0, sticky=(N, S, E, W))
hScrollbar["command"] = self.treeView.xview
hScrollbar.grid(row=1, column=0, sticky=(E,W))
vScrollbar["command"] = self.treeView.yview
vScrollbar.grid(row=0, column=1, sticky=(N,S))
treeFrame.columnconfigure(0, weight=1)
treeFrame.rowconfigure(0, weight=1)
treeFrame.grid(row=0, column=0, columnspan=4, sticky=(N, S, E, W), padx=3, pady=3)
self.treeView.focus_set()
mainWin.showStatus(_("loading archive {0}").format(filesource.url))
self.filesource = filesource
self.filenames = filenames
self.selection = filesource.selection
self.hasToolTip = False
selectedNode = None
if openType == ENTRY_POINTS:
try:
metadataFiles = filesource.taxonomyPackageMetadataFiles
if len(metadataFiles) > 1:
raise IOError(_("Taxonomy package contained more than one metadata file: {0}.")
.format(', '.join(metadataFiles)))
metadataFile = metadataFiles[0]
metadata = filesource.file(filesource.url + os.sep + metadataFile)[0]
self.metadataFilePrefix = os.sep.join(os.path.split(metadataFile)[:-1])
if self.metadataFilePrefix:
self.metadataFilePrefix += os.sep
self.nameToUrls, self.remappings = parseTxmyPkg(mainWin, metadata)
except Exception as e:
self.close()
err = _("Failed to parse metadata; the underlying error was: {0}").format(e)
messagebox.showerror(_("Malformed taxonomy package"), err)
mainWin.addToLog(err)
return
mainWin.showStatus(None)
if openType == DISCLOSURE_SYSTEM:
y = 3
else:
y = 1
okButton = Button(frame, text=_("OK"), command=self.ok)
cancelButton = Button(frame, text=_("Cancel"), command=self.close)
okButton.grid(row=y, column=2, sticky=(S,E,W), pady=3)
cancelButton.grid(row=y, column=3, sticky=(S,E,W), pady=3, padx=3)
if showAltViewButton:
self.altViewButton = Button(frame, command=self.showAltView)
self.altViewButton.grid(row=y, column=0, sticky=(S,W), pady=3, padx=3)
self.loadTreeView(openType, colHeader, title)
frame.grid(row=0, column=0, sticky=(N,S,E,W))
frame.columnconfigure(0, weight=1)
window = self.winfo_toplevel()
window.columnconfigure(0, weight=1)
self.geometry("+{0}+{1}".format(dialogX+50,dialogY+100))
self.bind("<Return>", self.ok)
self.bind("<Escape>", self.close)
self.toolTipText = StringVar()
if self.hasToolTip:
self.treeView.bind("<Motion>", self.motion, '+')
self.treeView.bind("<Leave>", self.leave, '+')
self.toolTipText = StringVar()
self.toolTip = ToolTip(self.treeView,
textvariable=self.toolTipText,
wraplength=640,
follow_mouse=True,
state="disabled")
self.toolTipRowId = None
self.protocol("WM_DELETE_WINDOW", self.close)
self.grab_set()
self.wait_window(self)
def loadTreeView(self, openType, title, colHeader):
#.........这里部分代码省略.........
示例7: Gui
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class Gui(Interface):
"""The GUI interface uses the tkinter module to generate
a window using tk
"""
TREE_COLUMNS = ("Number of probes : {nProbes}", "Probe address", "Status")
RESULT_DIPLAY_HEIGHT = 10
def __init__(self, ip):
Interface.__init__(self, ip)
self.commandHistory = []
self.mainWin = Tk()
self.command = StringVar(self.mainWin)
self.status = StringVar(self.mainWin, value="Waiting for command ...")
self.text = StringVar(self.mainWin, value="Enter a command :")
self.result = None
self.probesDisplay = None
self.mainWin.title("Commander for probe with ip : " + ip)
self.isRunning = True
self.mainWin.protocol("WM_DELETE_WINDOW", self.quit)
# define the threads
self.thProbe = Thread(target=self.updateProbes, name="Probe updater", daemon=True)
self.thResults = Thread(target=self.updateResults, name="Results Updater", daemon=True)
def start(self):
"""Starts (opens) the commander window"""
self.mainWin.geometry("800x600")
txtText = Label(self.mainWin, textvariable=self.text)
txtText.grid(row=0, column=0, sticky=W)
txtInput = Entry(self.mainWin, textvariable=self.command, width=30)
txtInput.grid(row=0, column=1, sticky=E + W)
txtInput.bind("<Return>", self.doCommand)
txtInput.bind("<Up>", self.recallCommand)
button = Button(self.mainWin, text="Refresh", fg="blue", command=self.triggerFetchProbes)
button.grid(row=1, column=0, sticky=N + S + E + W)
txtStatus = Label(self.mainWin, textvariable=self.status, wraplength=600, justify=CENTER)
txtStatus.grid(row=1, column=1, sticky=N + S + E + W)
self.probesDisplay = Treeview(self.mainWin, columns=self.TREE_COLUMNS, show="headings")
self.probesDisplay.grid(row=2, columnspan=2, sticky=N + S + E + W)
for i in range(0, len(self.TREE_COLUMNS)):
self.updateHeading(i, nProbes=0)
self.result = Text(self.mainWin, textvariable=self.result, height=self.RESULT_DIPLAY_HEIGHT, wrap=WORD)
self.result.configure(state=DISABLED)
self.result.grid(row=3, columnspan=2, sticky=N + S + E + W)
self.addResult("Awaiting results .... ")
self.mainWin.grid_rowconfigure(2, weight=1)
self.mainWin.grid_columnconfigure(1, weight=1)
self.probeFetcherScheduler()
self.thProbe.start()
self.resultFetcherScheduler()
self.thResults.start()
self.logger.info("Commander : Starting main window")
self.mainWin.mainloop()
self.logger.debug("Commander : mainloop over")
def recallCommand(self, event):
"""Function to rewrite previous command in box"""
if len(self.commandHistory) != 0:
self.command.set(self.commandHistory[-1])
return "break"
def doCommand(self, event):
"""Executes user command"""
self.commandHistory.append(self.command.get())
self.logger.info("Commander : executing command")
cmd = super().doCommand(self.command.get())
# cmd.join()
self.command.set("")
def updateStatus(self, status):
"""Update status of the probe in status label
:param status: new status"""
self.status.set(status)
self.mainWin.update_idletasks()
def addResult(self, result):
"""Add (prepend) a result in the result test area
:param result: the result to add
"""
self.result.configure(state=NORMAL)
self.result.insert("1.0", result + "\n")
self.result.configure(state=DISABLED)
def setResult(self, result):
"""Put this result in the result area
:param result: result to put
"""
self.result.configure(state=NORMAL)
#.........这里部分代码省略.........
示例8: ScrollableTreeview
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class ScrollableTreeview(Frame):
"""
An enhanced Tkinter Treeview control.
"""
def __init__(self, master, **args):
super().__init__(master)
# Parse Treeview options for the Treeview
opts = {x:args[x] for x in args if x in tree_options}
# Create child controls
self._vscroll = Scrollbar(self)
self._hscroll = Scrollbar(self, orient=HORIZONTAL)
opts['yscrollcommand'] = self._vscroll.set
opts['xscrollcommand'] = self._hscroll.set
self._tree = Treeview(self, **opts)
# Setup the child controls
self._init_controls()
# Link some of the treeview's controls to this control
self.item = self._tree.item
self.tag_bind = self._tree.tag_bind
self.tag_bind = self._tree.tag_configure
self.insert = self._tree.insert
self.delete = self._tree.delete
self.detach = self._tree.detach
self.heading = self._tree.heading
# If a header argument was passed in, then use it
self.set_headers(args.get('headers'))
def _init_controls(self):
"""
Initialize various properties of the child-controls
:return:
"""
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)
# Place the controls
self._tree.grid(row=0, column=0, sticky=NSEW)
self._vscroll.grid(row=0, column=1, sticky=NS)
self._hscroll.grid(row=1, column=0, sticky=EW)
# Setup scrollbars
self._vscroll.config(command=self._tree.yview)
self._hscroll.config(command=self._tree.xview)
def set_headers(self, headers: dict):
"""
Update any number of column headers.
:param headers:
:return:
"""
# If no headers were defined, then return
if headers is None:
return
# Iterate through all of the column headers and update their values
for col in headers:
tp = type(headers[col])
# Dictionary of parameters
if tp is dict:
self.heading(col, **headers[col])
# Just the title
elif tp is str:
self.heading(col, text=headers[col])
示例9: DialogPackageManager
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class DialogPackageManager(Toplevel):
def __init__(self, mainWin, packageNamesWithNewerFileDates):
super(DialogPackageManager, self).__init__(mainWin.parent)
self.ENABLE = _("Enable")
self.DISABLE = _("Disable")
self.parent = mainWin.parent
self.cntlr = mainWin
# copy plugins for temporary display
self.packagesConfig = PackageManager.packagesConfig
self.packagesConfigChanged = False
self.packageNamesWithNewerFileDates = packageNamesWithNewerFileDates
parentGeometry = re.match("(\d+)x(\d+)[+]?([-]?\d+)[+]?([-]?\d+)", self.parent.geometry())
dialogX = int(parentGeometry.group(3))
dialogY = int(parentGeometry.group(4))
self.title(_("Taxonomy Packages Manager"))
frame = Frame(self)
# left button frame
buttonFrame = Frame(frame, width=40)
buttonFrame.columnconfigure(0, weight=1)
addLabel = Label(buttonFrame, text=_("Find taxonomy packages:"), wraplength=64, justify="center")
addLocalButton = Button(buttonFrame, text=_("Locally"), command=self.findLocally)
ToolTip(addLocalButton, text=_("File chooser allows selecting taxonomy packages to add (or reload), from the local file system. "
"Select either a taxonomy package zip file, or a taxonomy manifest (.taxonomyPackage.xml) within an unzipped taxonomy package. "), wraplength=240)
addWebButton = Button(buttonFrame, text=_("On Web"), command=self.findOnWeb)
ToolTip(addWebButton, text=_("Dialog to enter URL full path to load (or reload) package, from the web or local file system. "
"URL may be either a taxonomy package zip file, or a taxonomy manifest (.taxonomyPackage.xml) within an unzipped taxonomy package. "), wraplength=240)
manifestNameButton = Button(buttonFrame, text=_("Manifest"), command=self.manifestName)
ToolTip(manifestNameButton, text=_("Provide non-standard archive manifest file name pattern (e.g., *taxonomyPackage.xml). "
"Uses unix file name pattern matching. "
"Multiple manifest files are supported in archive (such as oasis catalogs). "
"(Replaces search for either .taxonomyPackage.xml or catalog.xml). "), wraplength=240)
self.manifestNamePattern = ""
addLabel.grid(row=0, column=0, pady=4)
addLocalButton.grid(row=1, column=0, pady=4)
addWebButton.grid(row=2, column=0, pady=4)
manifestNameButton.grid(row=3, column=0, pady=4)
buttonFrame.grid(row=0, column=0, rowspan=3, sticky=(N, S, W), padx=3, pady=3)
# right tree frame (packages already known to arelle)
packagesFrame = Frame(frame, width=700)
vScrollbar = Scrollbar(packagesFrame, orient=VERTICAL)
hScrollbar = Scrollbar(packagesFrame, orient=HORIZONTAL)
self.packagesView = Treeview(packagesFrame, xscrollcommand=hScrollbar.set, yscrollcommand=vScrollbar.set, height=7)
self.packagesView.grid(row=0, column=0, sticky=(N, S, E, W))
self.packagesView.bind('<<TreeviewSelect>>', self.packageSelect)
hScrollbar["command"] = self.packagesView.xview
hScrollbar.grid(row=1, column=0, sticky=(E,W))
vScrollbar["command"] = self.packagesView.yview
vScrollbar.grid(row=0, column=1, sticky=(N,S))
packagesFrame.columnconfigure(0, weight=1)
packagesFrame.rowconfigure(0, weight=1)
packagesFrame.grid(row=0, column=1, columnspan=4, sticky=(N, S, E, W), padx=3, pady=3)
self.packagesView.focus_set()
self.packagesView.column("#0", width=120, anchor="w")
self.packagesView.heading("#0", text=_("Name"))
self.packagesView["columns"] = ("ver", "status", "date", "update", "descr")
self.packagesView.column("ver", width=150, anchor="w", stretch=False)
self.packagesView.heading("ver", text=_("Version"))
self.packagesView.column("status", width=50, anchor="w", stretch=False)
self.packagesView.heading("status", text=_("Status"))
self.packagesView.column("date", width=170, anchor="w", stretch=False)
self.packagesView.heading("date", text=_("File Date"))
self.packagesView.column("update", width=50, anchor="w", stretch=False)
self.packagesView.heading("update", text=_("Update"))
self.packagesView.column("descr", width=200, anchor="w", stretch=False)
self.packagesView.heading("descr", text=_("Description"))
remappingsFrame = Frame(frame)
vScrollbar = Scrollbar(remappingsFrame, orient=VERTICAL)
hScrollbar = Scrollbar(remappingsFrame, orient=HORIZONTAL)
self.remappingsView = Treeview(remappingsFrame, xscrollcommand=hScrollbar.set, yscrollcommand=vScrollbar.set, height=5)
self.remappingsView.grid(row=0, column=0, sticky=(N, S, E, W))
hScrollbar["command"] = self.remappingsView.xview
hScrollbar.grid(row=1, column=0, sticky=(E,W))
vScrollbar["command"] = self.remappingsView.yview
vScrollbar.grid(row=0, column=1, sticky=(N,S))
remappingsFrame.columnconfigure(0, weight=1)
remappingsFrame.rowconfigure(0, weight=1)
remappingsFrame.grid(row=1, column=1, columnspan=4, sticky=(N, S, E, W), padx=3, pady=3)
self.remappingsView.focus_set()
self.remappingsView.column("#0", width=200, anchor="w")
self.remappingsView.heading("#0", text=_("Prefix"))
self.remappingsView["columns"] = ("remapping")
self.remappingsView.column("remapping", width=500, anchor="w", stretch=False)
self.remappingsView.heading("remapping", text=_("Remapping"))
# bottom frame package info details
packageInfoFrame = Frame(frame, width=700)
packageInfoFrame.columnconfigure(1, weight=1)
self.packageNameLabel = Label(packageInfoFrame, wraplength=600, justify="left",
font=font.Font(family='Helvetica', size=12, weight='bold'))
self.packageNameLabel.grid(row=0, column=0, columnspan=6, sticky=W)
#.........这里部分代码省略.........
示例10: statistic_q
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class statistic_q():
def __init__(self,data,y,v='план'):
w=Toplevel()
w.wm_title('Поквартальная статистика за {0} год ({1})'.format(y,v))
w.columnconfigure(0,weight=1)
w.rowconfigure(0,weight=1)
cols=data[y]['degurs'] # ЗАГЛУШКА : список дежурных
self.t=Treeview(w,columns=cols)
self.t.column('#0',width=120)
for c in cols:
self.t.heading(c,text=c)
self.t.column(c,width=65,anchor='center')
self.t.tag_configure('табель',background='green')
self.t.tag_configure('ош',background='red')
self.scrX=Scrollbar(w,orient='horizontal',command=self.t.xview)
self.scrY=Scrollbar(w,orient='vertical',command=self.t.yview)
self.t['xscrollcommand']=self.scrX.set
self.t['yscrollcommand']=self.scrY.set
self.t.grid(row=0,column=0,sticky=N+S+E+W)
self.scrX.grid(row=1,column=0,sticky=E+W)
self.scrY.grid(row=0,column=1,sticky=N+S)
r=self.t.insert('','end',text='рабочих')
w=self.t.insert('','end',text='отработано')
e=self.t.insert('','end',text='дополнительные')
n=self.t.insert('','end',text='ночные')
h=self.t.insert('','end',text='праздничные')
x=self.t.insert('','end',text='xxx')
rz_root=self.t.insert('','end',text='резерв')
rez=dict()
wwY=[]
rrY=[]
eeY=[]
xxY=[]
nnY=[]
hhY=[]
rzY=[]
for mm in [1,2,3,4]:
mmm=[str((mm-1)*3+x).zfill(2) for x in [1,2,3]]
mmm=[x for x in mmm if x in data[y]]
tag=''
k=['табель' in data[y][m]['degur'] for m in mmm]
#print(k)
if v=='авто':
if k==[True, True, True]:
vv='табель'
tag=vv
else:
vv='план'
elif v=='табель':
if k!=[True, True, True]:
vv='план'
tag='ош'
else:
vv=v
tag=vv
else:
vv=v
ww=[]
rr=[]
ee=[]
xx=[]
nn=[]
hh=[]
rz=[]
for m in mmm:
d=data[y][m]
for j in cols:
s=d['degur'][vv].get(j,'*ООООООООООООООООООООООООООООООО*')
rez[j]=analyse2(s,d)
NUL=(0,0,0,0,0,0,0)
ww.append([rez.get(j,NUL)[0] for j in cols])
ee.append([rez.get(j,NUL)[0]-rez.get(j,NUL)[3] + \
rez.get(j,NUL)[4] for j in cols])
xx.append([rez.get(j,NUL)[0]-rez.get(j,NUL)[3] for j in cols])
rr.append([rez.get(j,NUL)[3]-rez.get(j,NUL)[4] for j in cols])
nn.append([rez.get(j,NUL)[1] for j in cols])
hh.append([rez.get(j,NUL)[2] for j in cols])
rz.append([rez.get(j,NUL)[5] for j in cols])
ww=[sum(x) for x in zip(*ww)]
rr=[sum(x) for x in zip(*rr)]
ee=[sum(x) for x in zip(*ee)]
xx=[sum(x) for x in zip(*xx)]
nn=[sum(x) for x in zip(*nn)]
hh=[sum(x) for x in zip(*hh)]
rz=[sum(x) for x in zip(*rz)]
wwY.append(ww)
rrY.append(rr)
eeY.append(ee)
xxY.append(xx)
nnY.append(nn)
hhY.append(hh)
rzY.append(rz)
self.t.insert(w,'end',text=mm,values=ww,tag=tag)
self.t.insert(r,'end',text=mm,values=rr,tag=tag)
#.........这里部分代码省略.........
示例11: statistic_xx
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class statistic_xx():
def __init__(self,data,y,v='план'):
w=Toplevel()
w.wm_title('Итоги по месяцам за {0} год ({1}) '.format(y,v))
w.columnconfigure(0,weight=1)
w.rowconfigure(0,weight=1)
cols=data[y]['degurs'] # ЗАГЛУШКА : список дежурных
self.t=Treeview(w,columns=cols)
self.t.column('#0',width=120)
for c in cols:
self.t.heading(c,text=c)
self.t.column(c,width=65,anchor='center')
self.t.tag_configure('табель',background='green')
self.t.tag_configure('ош',background='red')
self.scrX=Scrollbar(w,orient='horizontal',command=self.t.xview)
self.scrY=Scrollbar(w,orient='vertical',command=self.t.yview)
self.t['xscrollcommand']=self.scrX.set
self.t['yscrollcommand']=self.scrY.set
self.t.grid(row=0,column=0,sticky=N+S+E+W)
self.scrX.grid(row=1,column=0,sticky=E+W)
self.scrY.grid(row=0,column=1,sticky=N+S)
roots=dict()
for m in ['01','02','03','04','05','06','07','08','09','10','11','12']:
d0=data[y]
if m not in d0: continue
roots[m]=self.t.insert('','end',text=m+' ('+data[y][m]['month']+')')
#r=self.t.insert('','end',text='рабочих')
#x=self.t.insert('','end',text='xxx')
#w=self.t.insert('','end',text='отработано')
#e=self.t.insert('','end',text='дополнительные')
#n=self.t.insert('','end',text='ночные')
#h=self.t.insert('','end',text='праздничные')
#rz_root=self.t.insert('','end',text='резерв')
for m in ['01','02','03','04','05','06','07','08','09','10','11','12']:
d0=data[y]
if m not in d0: continue
d=d0[m]
rez=dict()
tag=''
if v=='авто':
if 'табель' in d['degur']:
vv='табель'
tag=vv
else:
vv='план'
elif v=='табель':
if 'табель' not in d['degur']:
vv='план'
tag='ош'
else:
vv=v
tag=vv
else:
vv=v
for j,s in d['degur'][vv].items():
rez[j]=analyse2(s,d)
NUL=(0,0,0,0,0,0,0)
ww=[rez.get(j,NUL)[0] for j in cols]
ee=[rez.get(j,NUL)[0]-rez.get(j,NUL)[3]+rez.get(j,NUL)[4] for j in cols]
xx=[rez.get(j,NUL)[0]-rez.get(j,NUL)[3] for j in cols]
nn=[rez.get(j,NUL)[1] for j in cols]
hh=[rez.get(j,NUL)[2] for j in cols]
rr=[rez.get(j,NUL)[3]-rez.get(j,NUL)[4] for j in cols]
rz=[rez.get(j,NUL)[5] for j in cols]
self.t.insert(roots[m],'end',text='отработано',values=ww,tag=tag)
self.t.insert(roots[m],'end',text='рабочие',values=rr,tag=tag)
self.t.insert(roots[m],'end',text='дополнительные',values=ee,tag=tag)
self.t.insert(roots[m],'end',text='ночные',values=nn,tag=tag)
self.t.insert(roots[m],'end',text='праздничные',values=hh,tag=tag)
示例12: Gr
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class Gr():
def __init__(self,root,data,SCRY=None):
self.data=data
self.columns=[x for x in range(1,8)]+['day']
root.rowconfigure(1,weight=1)
root.columnconfigure(0,weight=1)
root.columnconfigure(1,weight=1)
root.columnconfigure(2,weight=1)
f=Frame(root)
f.columnconfigure(0,weight=1)
f.rowconfigure(1,weight=1)
self.v=Combobox(root)
self.v.grid(row=0,column=0)
self.v.bind('<<ComboboxSelected>>',self.select_ver)
f.grid(row=1,column=0,columnspan=3,sticky=N+S)
self.tree=Treeview(f,
columns=self.columns,
displaycolumns=['day']+self.columns[:-1],
show='headings')
#self.tree.tag_configure('odd',background='white')
#self.tree.tag_configure('even',background='gray')
self.tree.tag_configure('dif',foreground='brown')
self.tree.tag_configure('work',background='white')
self.tree.tag_configure('short',background='#F5EFE0')
self.tree.tag_configure('rest',background='#E0B0B0')
self.tree.tag_configure('holyday',background='#E7B7A4')
for c in self.columns:
self.tree.heading(c,text=c)
self.tree.column(c,width=65,anchor='center')
self.tree.column('day',width=30)
scrX=Scrollbar(f,orient='horizontal',command=self.tree.xview)
self.tree['xscrollcommand']=scrX.set
if not SCRY:
self.scrY=Scrollbar(f,orient='vertical',command=self.yview)
self.tree['yscrollcommand']=self.scrY.set
else:
self.tree['yscrollcommand']=SCRY.set
self.tree.grid(row=1,column=0,sticky=N+S)
if not SCRY:
self.scrY.grid(row=1,column=1,sticky=N+S)
scrX.grid(row=2,column=0,sticky=E+W)
def set(self,y,m):
self.y=y
self.m=m
self.show()
def yview(self,*args):
self.tree.yview(*args)
self.yview2(*args)
def yview2(self,*args):
pass
def show(self):
d=self.data[self.y][self.m]
V=list(d['degur'].keys())
self.v['values']=V
self.v.set(V[0])
self.select_ver()
def select_ver(self,*e):
self.tree.delete(*self.tree.get_children())
d=self.data[self.y][self.m]
offset=d['offset']
v=self.v.get()
col=[]
for i,deg in enumerate(d['degurs']):
self.tree.heading(i+1,text=deg)
col.append(i+1)
self.tree.configure(displaycolumns=['day']+col)
items=dict()
if 'табель' in d['degur']:
a=[''.join(x) for x in zip(*[[x for x in d['degur']['план'][j]] \
for j in d['degurs']])]
b=[''.join(x) for x in zip(*[[x for x in d['degur']['табель'][j]] \
for j in d['degurs']])]
c=[x!=y for x,y in zip(a,b)]
else:
c=[False]*32
for i in range(1,d['days']+1):
tag = (i+offset) % 7 in [0,6] and 'rest' or 'work'
if i in d['holydays'] : tag='holyday'
elif i in d['restdays'] : tag='rest'
elif i in d['shortdays'] : tag='short'
elif i in d['workdays'] : tag='work'
if c[i]: tag=[tag,'dif']
ii=self.tree.insert('','end',values=['-','-','-','-','-'],tag=tag)
self.tree.set(ii,column='day',value=i)
items[i]=ii
for j,s in d['degur'][v].items(): # j-degur
if not s: continue
for i,val in enumerate(s[1:-1]):
if val=='J':
val='до'
elif val=='j':
val='од'
elif val=='a':
val='10'
self.tree.set(items[i+1],column=d['degurs'].index(j)+1,value=val)
if s[0]=='Н':
#.........这里部分代码省略.........
示例13: ElementListWidget
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class ElementListWidget(Frame):
def __init__(self, parent, label, columns, showError):
Frame.__init__(self, parent)
self.showError = showError
self.columnconfigure(0, weight = 1)
self.rowconfigure(1, weight = 1)
# Название таблицы
self.titleLabel = Label(self, text = label)
self.titleLabel.grid(column = 0, row = 0, sticky = W + E)
# Таблица значений
columns = ("Метка", "№") + columns
self.tree = Treeview(self, columns = columns, displaycolumns = columns,
selectmode = "browse")
self.tree.grid(column = 0, row = 1, sticky = W + N + E + S)
# Настраиваем внешний вид таблицы (первые колонки)
self.tree.column("#0", width = 0, stretch = 0) # Прячем колонку с иконкой
self.tree.column( columns[0], anchor = W, width = 150)
self.tree.heading(columns[0], anchor = W, text = columns[0])
self.tree.column( columns[1], anchor = E, width = 80)
self.tree.heading(columns[1], anchor = E, text = columns[1])
self.tree.bind("<<TreeviewSelect>>", self.onSelectionChanged)
# Панель с кнопками
self.buttonPanel = Frame(self)
self.buttonPanel.grid(column = 0, row = 2, sticky = W + E)
self.buttonPanel.columnconfigure(0, weight = 1)
self.buttonPanel.columnconfigure(3, minsize = emptySpaceSize, weight = 0)
self.buttonPanel.columnconfigure(6, minsize = emptySpaceSize, weight = 0)
self.buttonPanel.columnconfigure(9, weight = 1)
# Кнопки добавления/удаления элемента
self.buttonAdd = Button(self.buttonPanel, text = "+", width = 3,
command = self.onButtonAddClicked)
self.buttonAdd.grid(column = 1, row = 0)
self.buttonRemove = Button(self.buttonPanel, text = "-", width = 3, state = DISABLED,
command = self.onButtonRemoveClicked)
self.buttonRemove.grid(column = 2, row = 0)
# Кнопки перемещения элемента
self.buttonUp = Button(self.buttonPanel, text = "↑", width = 3, state = DISABLED,
command = self.onButtonUpClicked)
self.buttonUp.grid(column = 4, row = 0)
self.buttonDown = Button(self.buttonPanel, text = "↓", width = 3, state = DISABLED,
command = self.onButtonDownClicked)
self.buttonDown.grid(column = 5, row = 0)
# Кнопки применить/отменить (для выбранного элемента)
self.buttonCancel = Button(self.buttonPanel, text = "✗", width = 3,
command = self.updateSelectedFrame)
self.buttonCancel.grid(column = 7, row = 0)
self.buttonApply = Button(self.buttonPanel, text = "✓", width = 3,
command = self.onButtonApplyClicked)
self.buttonApply.grid(column = 8, row = 0)
# Редактирование выделенного элемента
self.i = StringVar()
self.label = (StringVar(), StringVar())
self.selectedFrame = Frame(self)
self.selectedFrame.grid(column = 0, row = 3, sticky = W + E)
# Номер
Label(self.selectedFrame, text = "№:") \
.grid(column = 0, row = 0)
Label(self.selectedFrame, textvariable = self.i, width = 3, justify = RIGHT) \
.grid(column = 1, row = 0)
# Пустое пространство
self.selectedFrame.columnconfigure(2, minsize = emptySpaceSize, weight = 0)
# Метка
Entry(self.selectedFrame, textvariable = self.label[0]) \
.grid(column = 3, row = 0, sticky = W + E)
Entry(self.selectedFrame, textvariable = self.label[1], bg = defaultValueBG) \
.grid(column = 4, row = 0, sticky = W + E)
# Виджет для элементов классов-потомков
self.detailFrame = Frame(self.selectedFrame)
self.detailFrame.grid(column = 3, row = 1, columnspan = 2, sticky = W + N + E + S)
self.selectedFrame.columnconfigure(3, weight = 1)
self.selectedFrame.columnconfigure(4, weight = 1)
self.selectedFrame.rowconfigure(1, weight = 1)
#.........这里部分代码省略.........
示例14: DialogOpenArchive
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class DialogOpenArchive(Toplevel):
def __init__(self, parent, openType, filesource, filenames, title, colHeader, showAltViewButton=False):
if isinstance(parent, Cntlr):
cntlr = parent
parent = parent.parent # parent is cntlrWinMain
else: # parent is a Toplevel dialog
cntlr = parent.cntlr
super(DialogOpenArchive, self).__init__(parent)
self.parent = parent
self.showAltViewButton = showAltViewButton
parentGeometry = re.match("(\d+)x(\d+)[+]?([-]?\d+)[+]?([-]?\d+)", parent.geometry())
dialogX = int(parentGeometry.group(3))
dialogY = int(parentGeometry.group(4))
self.accepted = False
self.transient(self.parent)
frame = Frame(self)
treeFrame = Frame(frame, width=500)
vScrollbar = Scrollbar(treeFrame, orient=VERTICAL)
hScrollbar = Scrollbar(treeFrame, orient=HORIZONTAL)
self.treeView = Treeview(treeFrame, xscrollcommand=hScrollbar.set, yscrollcommand=vScrollbar.set)
self.treeView.grid(row=0, column=0, sticky=(N, S, E, W))
hScrollbar["command"] = self.treeView.xview
hScrollbar.grid(row=1, column=0, sticky=(E,W))
vScrollbar["command"] = self.treeView.yview
vScrollbar.grid(row=0, column=1, sticky=(N,S))
treeFrame.columnconfigure(0, weight=1)
treeFrame.rowconfigure(0, weight=1)
treeFrame.grid(row=0, column=0, columnspan=4, sticky=(N, S, E, W), padx=3, pady=3)
self.treeView.focus_set()
if openType not in (PLUGIN, PACKAGE):
cntlr.showStatus(_("loading archive {0}").format(filesource.url))
self.filesource = filesource
self.filenames = filenames
self.selection = filesource.selection
self.hasToolTip = False
selectedNode = None
if openType == ENTRY_POINTS:
try:
metadataFiles = filesource.taxonomyPackageMetadataFiles
''' take first for now
if len(metadataFiles) != 1:
raise IOError(_("Taxonomy package contained more than one metadata file: {0}.")
.format(', '.join(metadataFiles)))
'''
metadataFile = metadataFiles[0]
metadata = filesource.url + os.sep + metadataFile
self.metadataFilePrefix = os.sep.join(os.path.split(metadataFile)[:-1])
if self.metadataFilePrefix:
self.metadataFilePrefix += "/" # zip contents have /, never \ file seps
self.taxonomyPkgMetaInf = '{}/META-INF/'.format(
os.path.splitext(os.path.basename(filesource.url))[0])
self.taxonomyPackage = parsePackage(cntlr, filesource, metadata,
os.sep.join(os.path.split(metadata)[:-1]) + os.sep)
if self.taxonomyPackage["entryPoints"]:
# may have instance documents too
self.packageContainedInstances = []
packageContentTypeCounts = {}
for suffix in (".xhtml", ".htm", ".html"):
for potentialInstance in filesource.dir:
if potentialInstance.endswith(".xhtml"):
_type = "Inline Instance"
self.packageContainedInstances.append([potentialInstance, _type])
packageContentTypeCounts[potentialInstance] = packageContentTypeCounts.get(potentialInstance, 0) + 1
if self.packageContainedInstances:
break
if self.packageContainedInstances: # add sequences to any duplicated entry types
for _type, count in packageContentTypeCounts.items():
if count > 1:
_dupNo = 0
for i in range(len(self.packageContainedInstances)):
if self.packageContainedInstances[i][0] == _type:
_dupNo += 1
self.packageContainedInstances[i][0] = "{} {}".format(_type, _dupNo)
else:
# may be a catalog file with no entry oint names
openType = ARCHIVE # no entry points to show, just archive
self.showAltViewButton = False
except Exception as e:
self.close()
err = _("Failed to parse metadata; the underlying error was: {0}").format(e)
messagebox.showerror(_("Malformed taxonomy package"), err)
cntlr.addToLog(err)
return
if openType not in (PLUGIN, PACKAGE):
cntlr.showStatus(None)
if openType in (DISCLOSURE_SYSTEM, PLUGIN, PACKAGE):
y = 3
else:
#.........这里部分代码省略.........
示例15: NameView
# 需要导入模块: from tkinter.ttk import Treeview [as 别名]
# 或者: from tkinter.ttk.Treeview import grid [as 别名]
class NameView(object):
"""Shows a treeview of unique names."""
def __init__(self, master, names):
self.widget = Frame(master)
self._tree = Treeview(self.widget, columns='name')
self._tree.grid(row=0,column=0, sticky=(N,S,W,E))
self._tree.view = self
self.widget.columnconfigure(0, weight=1)
self.widget.rowconfigure(0,weight=1)
self._tree.column('name', width=50)
self._tree['show'] = 'tree'
actions = {'edit': lambda e: self.edit(),
'search': lambda e: self.search(),
'focus_next': lambda e: self.focus_next(),
'focus_prev': lambda e: self.focus_prev(),
'select': lambda e: self._tree.selection_toggle(self._tree.focus()),
'clear_selection': lambda e: self._tree.selection_set([])
}
kb.make_bindings(kb.tagview, actions, self._tree.bind)
self._iids = dict()
self._names = dict()
logger.debug('Names: %s', names)
self.widget.focus_set = self._tree.focus_set
for name in sorted(names):
iid = self._tree.insert('', 'end', text=name)
self._names[iid] = name
self._iids[name] = iid
self._scroll = Scrollbar(self.widget, command=self._tree.yview)
self._tree['yscrollcommand'] = self._scroll.set
self._scroll.grid(row=0, column=1, sticky=(N, S))
self.widget.columnconfigure(1, weight=0)
def selection(self):
logger.debug('Selection: %s', self._tree.selection())
return [self._names[iid] for iid in self._tree.selection()]
def edit(self):
self._tree.event_generate('<<NameViewEdit>>')
def search(self):
if len(self._tree.selection()) == 0:
self._tree.selection_add(self._tree.focus())
self._tree.event_generate('<<NameViewSearch>>')
def append(self, names):
logger.debug('Append names: %s', names)
for name in names:
if name not in self._names.values():
iid = self._tree.insert('', 'end', text=name)
self._names[iid] = name
self._iids[name] = iid
def delete(self, name):
self._tree.delete(self._iids[name])
del self._names[self._iids[name]]
del self._iids[name]
def _focus(self, iid):
self._tree.focus(iid)
self._tree.see(iid)
def focus_next(self):
cur_iid = self._tree.focus()
next_iid = self._tree.next(cur_iid)
if next_iid == '':
iids = self._tree.get_children()
next_iid = iids[0]
self._focus(next_iid)
def focus_prev(self):
cur_iid = self._tree.focus()
prev_iid = self._tree.prev(cur_iid)
if prev_iid == '':
iids = self._tree.get_children()
prev_iid = iids[-1]
self._focus(prev_iid)
def jump_to(self, name):
try:
iid = self._iids[name]
self._focus(iid)
except KeyError:
pass
def get_names(self):
return tuple(self._names.values())
def set(self, names):
self._tree.delete(*self._iids.values())
self._iids.clear()
self._names.clear()
for name in sorted(names):
iid = self._tree.insert('', 'end', text=name)
self._names[iid] = name
self._iids[name] = iid