首先,我从表中选择所有记录并将其列在我的GUI中。 每行旁边都有两个按钮,一个用于删除记录,另一个用于在弹出屏幕中查看/更新该特定记录。我尝试了几个不同的东西,但我似乎无法从我想查看/更新的特定记录中获取信息。我试过将textvariables添加到按钮等。
我的问题是,如何查看和/或更新表格中所有行的列表中的特定行?
def Show_Keylog_Records(self):
data = self.Select_Keylog_Records()
for index, dat in enumerate(data):
Row_ID = index
Key_Num = dat[0]
self.Row_ID = Frame(self.Result_Frame, bg='#333')
Label(self.Row_ID, text=dat[0]).pack(side=LEFT, expand=YES, fill=X)
Label(self.Row_ID, text=dat[1]).pack(side=LEFT, expand=YES, fill=X)
Label(self.Row_ID, text=dat[2]).pack(side=LEFT, expand=YES, fill=X)
Label(self.Row_ID, text=dat[3]).pack(side=LEFT, expand=YES, fill=X)
Button(self.Row_ID, text='view', textvariable=Row_ID, command=self.View_Keylog_Record).pack(side=RIGHT)
Button(self.Row_ID, text='Delete', command=self.Delete_Keylog_Record).pack(side=RIGHT, padx=5)
self.Row_ID.pack(side=TOP, fill=X, pady=3)
def Select_Keylog_Records(self):
c.execute("SELECT * FROM KeyLog")
return c.fetchall()
def View_Keylog_Record(self):
Record = (Row_ID.get(),)
c.execute('SELECT * FROM KeyLog WHERE index=?', Record)
print c.fetchone()
答案 0 :(得分:0)
我认为你需要的是将index
传递给函数。如果是这样,请更改Button实例化,如下所示:
Button(self.Row_ID, text='view', command=lambda index=index: self.View_Keylog_Record(index)).pack(side=RIGHT)
或强>
Button(self.Row_ID, text='view', command=functools.partial(self.View_Keylog_Record, index)).pack(side=RIGHT)
请注意,您必须import functools
才能使用第二个选项。
对删除按钮进行类似的更改,然后修改如下函数:
def View_Keylog_Record(self, index):
c.execute('SELECT * FROM KeyLog WHERE index=?', (index,))
print c.fetchone()
对Delete_Keylog_Record进行相应的更改,看看它是否适合您。