tkinter.END
时间: 2023-09-22 17:13:12 浏览: 97
tkinter.END 是 Tkinter GUI 模块中 Text widget 的一个常量。它表示 Text widget 的末尾位置,可以用于指定文本的插入、删除、替换等操作的位置参数。例如,使用 widget.insert(tkinter.END, text) 可以将文本 text 插入到 Text widget 的末尾位置。
相关问题
def recv(): global users, friends while True: # 消息主循环 data = s.recv(1024) data = data.decode() msg = data.split(':;') if len(msg) == 1: # 是用户列表消息 data = json.loads(data) # 还原为列表对象 print(data) if data["type"] == "online_list": # 在线列表消息 users = data["data"] online_list.delete(0,tkinter.END) # 清空列表框 number = ' 在线用户:'+str(len(users)) online_list.insert(tkinter.END, number) online_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff') online_list.insert(tkinter.END, '===== 群聊 =====') online_list.insert(tkinter.END, 'Robot') online_list.itemconfig(tkinter.END, fg='green') for i in range(len(users)): online_list.insert(tkinter.END, users[i]) online_list.itemconfig(tkinter.END, fg='green') elif data["type"] == "friend_list": friends = data["data"] friend_list.delete(0, tkinter.END) # 清空好友列表框 number = ' 用户好友:' + str(len(friends)) friend_list.insert(tkinter.END, number) friend_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff') for i in range(len(friends)): friend_list.insert(tkinter.END, friends[i]) friend_list.itemconfig(tkinter.END, fg='green') 请修改上述代码
以下是修改后的代码,将消息接收和解析的逻辑分离出来,将好友列表和用户列表存储在字典中,方便查找:
```
users_dict = {}
friends_dict = {}
def parse_message(data):
msg = data.split(':;')
if len(msg) == 1: # 是用户列表消息
data = json.loads(data) # 还原为列表对象
if data["type"] == "online_list": # 在线列表消息
online_users = data["data"]
offline_users = [user for user in users_dict.keys() if user not in online_users]
update_user_list(online_users, offline_users)
users_dict.update((user, True) for user in online_users)
users_dict.update((user, False) for user in offline_users)
elif data["type"] == "friend_list": # 好友列表消息
friends = data["data"]
update_friend_list(friends)
friends_dict.clear()
friends_dict.update((friend, True) for friend in friends)
else: # 是聊天消息
# TODO: 处理聊天消息
pass
def update_user_list(online_users, offline_users):
online_list.delete(0, tkinter.END)
number = ' 在线用户:'+str(len(online_users))
online_list.insert(tkinter.END, number)
online_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff')
online_list.insert(tkinter.END, '===== 群聊 =====')
online_list.insert(tkinter.END, 'Robot')
online_list.itemconfig(tkinter.END, fg='green')
for user in online_users:
online_list.insert(tkinter.END, user)
online_list.itemconfig(tkinter.END, fg='green')
for user in offline_users:
online_list.insert(tkinter.END, user)
online_list.itemconfig(tkinter.END, fg='gray')
def update_friend_list(friends):
friend_list.delete(0, tkinter.END)
number = ' 用户好友:' + str(len(friends))
friend_list.insert(tkinter.END, number)
friend_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff')
for friend in friends:
if friend in users_dict and users_dict[friend]: # 好友在线
friend_list.insert(tkinter.END, friend)
friend_list.itemconfig(tkinter.END, fg='green')
else: # 好友离线
friend_list.insert(tkinter.END, friend)
friend_list.itemconfig(tkinter.END, fg='gray')
def recv():
global users_dict, friends_dict
while True:
data = s.recv(1024).decode()
parse_message(data)
```
这段代码将在线用户列表和离线用户列表分开处理,对于离线用户,在用户列表中使用灰色字体表示。好友列表也更新为了一个字典形式,方便查找某个好友是否在线。聊天消息的处理部分暂时使用了TODO标记,需要根据具体需求进行实现。
def recv(): global users while True: # 消息主循环 data = s.recv(1024) data = data.decode() msg = data.split(':;') if len(msg) == 1: # 是用户列表消息 data = json.loads(data) # 还原为列表对象 print(data) if data[0] == '===== 群聊 =====': users = data online_list.delete(0,tkinter.END) # 清空列表框 number = ' 在线用户:'+str(len(data)) online_list.insert(tkinter.END, number) online_list.itemconfig(tkinter.END,fg='green',bg='#f0f0ff') online_list.insert(tkinter.END,'===== 群聊 =====') online_list.insert(tkinter.END,'Robot') online_list.itemconfig(tkinter.END,fg='green') for i in range(len(data)): online_list.insert(tkinter.END,data[i]) online_list.itemconfig(tkinter.END,fg='green') else: 请编写用户好友列表代码
好的,以下是一个简单的用户好友列表代码示例:
```
import tkinter
root = tkinter.Tk()
root.title("用户好友列表")
# 在线用户列表框
online_list = tkinter.Listbox(root, width=50)
online_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
# 好友列表框
friends_list = tkinter.Listbox(root, width=50)
friends_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
# 添加在线用户列表
online_list.insert(tkinter.END, "在线用户")
online_list.insert(tkinter.END, "user1")
online_list.insert(tkinter.END, "user2")
online_list.insert(tkinter.END, "user3")
# 添加好友列表
friends_list.insert(tkinter.END, "好友列表")
friends_list.insert(tkinter.END, "friend1")
friends_list.insert(tkinter.END, "friend2")
friends_list.insert(tkinter.END, "friend3")
root.mainloop()
```
该代码创建了一个窗口并在左侧添加了一个在线用户列表框,右侧添加了一个好友列表框,并向列表框中添加了一些示例用户和好友。你可以根据自己的需求来修改和扩展它。
阅读全文