def add_friend(): friend_name = simpledialog.askstring("添加好友", "请输入好友的昵称:") if friend_name: if friend_name not in friend_list: friend_list.append(friend_name) online_list.insert(tkinter.END, friend_name) print("添加成功!") else: print("该用户已经是你的好友!")根据这个函数,编写删除好友的函数
时间: 2024-01-30 14:03:23 浏览: 69
以下是删除好友的函数示例:
```python
def delete_friend():
friend_name = simpledialog.askstring("删除好友", "请输入要删除的好友昵称:")
if friend_name:
if friend_name in friend_list:
friend_list.remove(friend_name)
online_list.delete(online_list.get(0, tkinter.END).index(friend_name))
print("删除成功!")
else:
print("该用户不是你的好友!")
```
该函数与 `add_friend()` 函数类似,通过 `simpledialog.askstring()` 函数获取用户输入的好友昵称,然后判断该好友是否存在于好友列表中。如果存在,则将其从 `friend_list` 列表中删除,并从在线列表 `online_list` 中删除该好友。如果不存在,则输出提示信息。
相关问题
online_list = tkinter.Listbox(root,font=("黑体",12)) online_list.place(x=605,y=0,width=130,height=320) #增删好友 online_list = tkinter.Listbox(root,font=("黑体",12)) online_list.place(x=735,y=0,width=130,height=320) friend_list = [] def add_friend(): friend_name = simpledialog.askstring("添加好友", "请输入好友的昵称:") if friend_name: if friend_name not in friend_list: friend_list.append(friend_name) online_list.insert(tkinter.END, friend_name) print("添加成功!") else: print("该用户已经是你的好友!") button = tkinter.Button(root, text='添加好友', command=add_friend, font=("微软雅黑", 14), bg="#0099ff", fg="#fff", activebackground="#ff6600") button.place(x=635, y=320, width=100, height=30)
你的代码中有两个 `online_list`,他们的位置和大小都相同,可能会导致显示上的混乱。如果你想要在同一个窗口中显示两个好友列表,你可以将它们放在不同的 `Frame` 中,这样就可以分别对它们进行管理。
以下是代码示例:
```python
# 创建 Frame1
frame1 = tkinter.Frame(root)
frame1.place(x=605, y=0, width=130, height=320)
# 在 Frame1 中创建列表框 listbox1
listbox1 = tkinter.Listbox(frame1, font=("黑体", 12))
listbox1.pack(fill=tkinter.BOTH, expand=True)
# 创建 Frame2
frame2 = tkinter.Frame(root)
frame2.place(x=735, y=0, width=130, height=320)
# 在 Frame2 中创建列表框 listbox2
listbox2 = tkinter.Listbox(frame2, font=("黑体", 12))
listbox2.pack(fill=tkinter.BOTH, expand=True)
# 增删好友
friend_list = []
def add_friend():
friend_name = simpledialog.askstring("添加好友", "请输入好友的昵称:")
if friend_name:
if friend_name not in friend_list:
friend_list.append(friend_name)
listbox2.insert(tkinter.END, friend_name)
print("添加成功!")
else:
print("该用户已经是你的好友!")
button = tkinter.Button(root, text='添加好友', command=add_friend, font=("微软雅黑", 14), bg="#0099ff", fg="#fff", activebackground="#ff6600")
button.place(x=635, y=320, width=100, height=30)
```
在这个例子中,我们创建了两个 `Frame`,每个 `Frame` 中都包含一个 `Listbox` 控件。这样可以让你在同一个窗口中显示两个好友列表,而不会发生位置和大小上的冲突。在 `add_friend` 函数中,我们将新的好友昵称添加到 `listbox2` 中,而不是添加到 `online_list` 中。
online_list = tkinter.Listbox(root,font=("黑体",12)) online_list.place(x=735,y=0,width=130,height=320) friend_list={} def add_friend(): friend_name = input("请输入好友的昵称:") if friend_name not in friend_list: friend_list.append(friend_name) print("添加成功!") else: print("该用户已经是你的好友!")
这段代码存在几个问题,我来帮你分析和修改:
1. 在代码的开头,你定义了一个空字典 `friend_list={}`,但在 `add_friend` 函数中,你尝试将好友的昵称添加到 `friend_list` 中,这会导致类型错误。如果你想要将好友的昵称添加到列表中,应该将 `friend_list` 定义为列表对象,如下所示:
```python
friend_list = []
```
2. 你在 `add_friend` 函数中使用了 `input` 函数,这会导致程序在命令行中等待用户输入好友的昵称。但是,你的程序是一个 GUI 程序,应该使用 GUI 控件来让用户输入好友的昵称。可以使用 `tkinter.simpledialog` 模块中的 `askstring` 方法来实现这个功能,如下所示:
```python
from tkinter import simpledialog
def add_friend():
friend_name = simpledialog.askstring("添加好友", "请输入好友的昵称:")
if friend_name:
if friend_name not in friend_list:
friend_list.append(friend_name)
print("添加成功!")
else:
print("该用户已经是你的好友!")
```
这里使用了 `simpledialog.askstring` 方法来创建一个弹出窗口,让用户输入好友的昵称。方法的第一个参数是窗口的标题,第二个参数是提示文本。如果用户输入了好友的昵称,那么将进行添加好友的操作。如果用户没有输入好友的昵称,那么什么都不会发生。
3. 在添加好友成功后,你需要将好友的昵称添加到 GUI 程序中的好友列表中。可以使用 `tkinter.Listbox` 控件的 `insert` 方法来实现这个功能,如下所示:
```python
def add_friend():
friend_name = simpledialog.askstring("添加好友", "请输入好友的昵称:")
if friend_name:
if friend_name not in friend_list:
friend_list.append(friend_name)
online_list.insert(tkinter.END, friend_name)
print("添加成功!")
else:
print("该用户已经是你的好友!")
```
这里使用了 `online_list.insert(tkinter.END, friend_name)` 方法将好友的昵称添加到 GUI 程序中的好友列表中。`tkinter.END` 表示将新的好友昵称插入到列表的末尾。
阅读全文