我有一個Python3應用程序,它使用tkinter接口來收集存儲在MySQL數據庫中的編輯信息&。數據由幾個表組成,每個錶行由一個由多個StringVar()組成的類(這裏稱爲「Action」)表示,有時用按鈕顯示以刪除或插入新行。類成員存儲在類變量'_registry'中進行各種操作。Python3&Tkinter,list.sort由StringVar構成的對象列表
在創建新行(在應用程序中,而不是數據庫)後,用戶可以輸入超出自然順序的數據,所以我想根據StringVar('date' )再次顯示之前。儘管數據庫可以輕鬆處理這個問題,並且很可能有其他簡單的方法來完成它,但似乎list.sort應該能夠做到,但我無法弄清楚如何讓密鑰工作。
這裏的init類的沒有其他功能:
class Action:
_registry=[]
def __init__(self, date, quantity, temp, pressure, notes):
self.date=StringVar()
self.quantity=StringVar()
self.temp=StringVar()
self.pressure=StringVar()
self.notes=StringVar()
self.date.set(date)
self.quantity.set(quantity)
self.temp.set(temp)
self.pressure.set(pressure)
self.notes.set(notes)
Action._registry.append(self)
這裏是一個不太難達到我想要排序的數據的方法:
>>> Action._registry[1].__dict__['date'].get()
'2015-08-25'
這裏是我的一些失敗嘗試讓list.sort使用'date'StringVar的內容。
>>> list.sort(Action._registry, key=lambda __dict__['date'].get())
File "<stdin>", line 1
list.sort(Action._registry, key=lambda __dict__['date'].get())
^
SyntaxError: invalid syntax
>>> list.sort(Action._registry, key=attrgetter('date'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: StringVar() < StringVar()
>>> list.sort(Action._registry, key=itemgetter('date'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Action' object is not subscriptable
>>> list.sort(Action._registry, key=attrgetter(Action._registry.__dict__['date'].get()))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute '__dict__'
好像list.sort將隱含應用的關鍵功能_registry,但我無法找到所要求的「獲得()」的作品語法。
完美,謝謝! – Pepi