Прошу прощения, что раньше не смог. Жуткая неделя.
Держите. Сохранение рекомендую реализовывать с использованием модуля shelve. Если нужна будет помощь в этом, то помогу обязательно.
#coding: utf-8
#
import Tkinter
#
#
def save(type_, entry, top_level):
"""save new client or change existing"""
#
if type_ == "new":
clients.insert("end", entry.get())
clients.activate("end")
clients.select_clear(clients.curselection()[0])
clients.selection_set("end")
clients.see("end")
#
else:
position = clients.curselection()
clients.delete(position)
clients.insert(position, entry.get())
clients.activate(position)
clients.select_set(position)
#
top_level.destroy()
#
#
def create_change(type_):
"""create top level window to create new client or change existing"""
#
name = u"Новый клиент" if type_ == "change" else u"Изменить клиента"
in_ = clients.get(clients.curselection()[0]) if type_ == "change" else u""
#
top_level = Tkinter.Toplevel()
Tkinter.Label(
top_level, text=name
).grid(row=0, column=0, columnspan=2, padx=10, pady=10)
client_e = Tkinter.Entry(top_level)
client_e.grid(row=1, column=0, columnspan=2, padx=10, pady=10)
client_e.insert(0, in_)
client_e.focus_force()
Tkinter.Button(
top_level, text=u"Сохранить",
command=lambda: save(type_, client_e, top_level)
).grid(row=2, column=0, padx=10, pady=10)
Tkinter.Button(
top_level, text=u"Отменить", command=lambda: top_level.destroy()
).grid(row=2, column=1, padx=10, pady=10)
#
root = Tkinter.Tk()
root.title(u"Клиенты-заказы")
#
client_f = Tkinter.LabelFrame(text=u"Клиенты")
client_f.pack(side="left", padx=20, pady=10)
#
# client listbox and scrollbar
lsb_f = Tkinter.Frame(client_f)
lsb_f.pack(side="top", padx=10)
clients = Tkinter.Listbox(lsb_f, width=20, height=20)
scr = Tkinter.Scrollbar(lsb_f)
scr["command"] = clients.yview
clients["yscrollcommand"] = scr.set
clients.pack(side="left", pady=5)
scr.pack(side="right", pady=5, fill="y")
#
# buttons "+", "Изменить" u"-"
but_f = Tkinter.Frame(client_f)
but_f.pack(side="bottom", pady=10)
Tkinter.Button(
but_f, text="+", command=lambda: create_change("new")
).grid(row=0, column=0, padx=5)
Tkinter.Button(
but_f, text=u"Изменить", command=lambda: create_change("change")
).grid(row=0, column=1, padx=5)
Tkinter.Button(but_f, text=u"-").grid(row=0, column=2, padx=5)
#
# insert old clients and activate first line
clients.insert("end", *["Клиент {0:0>2}".format(i) for i in xrange(100)])
clients.activate(0)
clients.selection_set(0)
clients.focus_force()
#
root.mainloop()