Amateur Scripting здесь чисто как побочное хобби, но функционирует для улучшения трудовой жизни.Я создаю функцию профиля загрузки как часть графического интерфейса.Я ограничен 2.4, где ttk не существует без видения обновления языковой версии.Я возился с Тиксом, и у меня есть последнее, что нужно написать.Мне нужно сгенерировать функцию сортировки по столбцам, но я не могу понять, как (по алфавиту или по возрастанию).
Есть виджет записи, который обновляет список выбора на основе переменной поиска.
У меня есть приложение, читающее CSV-файл, который выглядит следующим образом:
Peter,Griffin,Safety Inspector,Toys,3B,238-4945
Homer,Simpson,Safety Inspector,Nuclear,41A,256-8764
Philip,Fry,Pilot/Delivery Boy,Intergalactic Deliveries,14D,432-5983
Sterling,Archer,Spy,Intelligence,101G,123-1234
Rick,Sanchez,Genius Scientist,Science,Garage,None
Python 2.4 Tix HList код
from Tkinter import *
import Tix
import csv
TCL_ALL_EVENTS = 0
def Run(root):
shlist = Application(root)
shlist.mainloop()
shlist.destroy()
class Application:
def __init__(self, w):
self.root = w
self.exit = -1
z = w.winfo_toplevel()
z.wm_protocol('WM_DELETE_WINDOW', lambda self=self: self.quitcmd())
top = Tix.Frame( w, relief=Tix.RAISED, bd=1)
top.pack()
self.search_var = StringVar()
self.search_var.trace('w', lambda name, index, mode: self.update_list())
self.entry = Entry(top, textvariable = self.search_var, width=13)
self.entry.pack(expand=1, fill=Tix.BOTH, padx=10, pady=10)
self.dataCols = ('First','Last','Position','Department','Office','Phone Number')
top.a = Tix.ScrolledHList(top, options='hlist.columns 6 hlist.header 1' )
top.a.pack( expand=1, fill=Tix.BOTH, padx=10, pady=10)
box = Tix.ButtonBox(top, orientation=Tix.HORIZONTAL)
box.add('ok', text='Ok', underline=0, width=6,
command=self.okcmd)
box.add('cancel', text='Cancel', underline=0, width=6,
command=self.quitcmd)
box.pack(side=Tix.BOTTOM, fill=Tix.X)
top.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
self.hlist=top.a.hlist
boldfont=self.hlist.tk.call('tix','option','get','bold_font')
self.style={}
self.style['header'] = Tix.DisplayStyle(Tix.TEXT, refwindow=self.hlist,
anchor=Tix.CENTER, padx=8, pady=2, font = boldfont )
self.style['style1'] = Tix.DisplayStyle(Tix.TEXT, refwindow=self.hlist)
num = 0
for c in self.dataCols:
self.hlist.header_create(num, itemtype=Tix.TEXT, text=c, style=self.style['header'])
num += 1
self.hlist.config(width=25, drawbranch=0, indent=10)
self.update_list()
def update_list(self):
self.hlist.delete_all()
search_term = self.search_var.get()
file = open('DB.csv', 'r')
lbox_list = []
for row in file:
lbox_list.append(row.split(','))
refresh = []
for item in lbox_list:
if search_term.upper() in ''.join(item).upper():
refresh.append(item)
i = 0
for first, last, position, department, office, phonenumber in refresh:
self.hlist.add(i, itemtype=Tix.TEXT, text=first, style=self.style['style1'])
self.hlist.item_create(i, 1, itemtype=Tix.TEXT, text=last, style=self.style['style1'])
self.hlist.item_create(i, 2, itemtype=Tix.TEXT, text=position, style=self.style['style1'])
self.hlist.item_create(i, 3, itemtype=Tix.TEXT, text=department, style=self.style['style1'])
self.hlist.item_create(i, 4, itemtype=Tix.TEXT, text=office, style=self.style['style1'])
self.hlist.item_create(i, 5, itemtype=Tix.TEXT, text=phonenumber.strip(), style=self.style['style1'])
i += 1
def okcmd (self):
self.quitcmd()
def quitcmd (self):
self.exit = 0
def mainloop(self):
while self.exit < 0:
self.root.tk.dooneevent(TCL_ALL_EVENTS)
def destroy (self):
self.root.destroy()
if __name__== '__main__' :
root=Tix.Tk()
root.geometry('600x300')
Run(root)