我正在用kivy构建一个聊天应用程序,并具有一个用户朋友的SelectableRecycleBoxLayout(效果很好)。我试图在用户每次从列表中选择一个朋友时切换到该聊天,并且我还在对消息使用回收站视图。现在我不使用数据模型或适配器(我是kivy的新手)。这是朋友列表的一部分:
class SelectableLabel(RecycleDataViewBehavior, Label):
def apply_selection(self, rv, index, is_selected):
''' Respond to the selection of items in the view. '''
self.selected = is_selected
global dest,chats,convos, selection
if is_selected:
dest = [value for value in rv.data[index].values()]
print(dest)
selection = True
问题在于,每次我切换聊天时,标签故障都会出现,并且彼此之间有很大的空间。每次切换聊天时,我都会将聊天记录保存在词典列表列表中,因为我的聊天室数据是词典列表,所以我可以切换到我切换到的客户端索引中的聊天记录。看照片:
这是在切换聊天之前
这是在切换到noam之后而不是回到ron
if selection and dest != "":
if dest[0] in convos:
i = convos.index(dest[0])
else:
convos.append(dest[0])
chats.append([])
i = convos.index(dest[0])
self.ids.messages.data = chats[i]
selection = False
print("changed selection")
my_client.new_messages = []
上面的代码在线程中,因此我检查是否进行了选择以及是否进行了数据切换。请在我将数据附加到数据中时可以解决此问题,但是当我重新定义数据时会出现故障:/