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("该用户已经是你的好友!")
时间: 2024-01-31 07:04:16 浏览: 124
code09_tkinter_login.pyw_python_tkinter_notepad.pyw_
这段代码存在几个问题,我来帮你分析和修改:
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` 表示将新的好友昵称插入到列表的末尾。
阅读全文