add_button = tk.Button(window, text="添加", command=add_student) add_button.grid(row=5, column=0) update_button = tk.Button(window, text="修改", command=update_student) update_button.grid(row=5, column=1) delete_button = tk.Button(window, text="删除", command=delete_student) delete_button.grid(row=5, column=2) search_button = tk.Button(window, text="查询", command=search_student) search_button.grid(row=5, column=3) # 连接到 MySQL 数据库 cursor.execute("SELECT * FROM student_info") result = cursor.fetchall() for row in result: tk.Label(root, text=row[0]).pack() # 运行 GUI 应用程序 root.mainloop()
时间: 2024-04-02 11:37:40 浏览: 10
这段代码添加了四个按钮,分别是“添加”、“修改”、“删除”和“查询”,并分别绑定了对应的函数 add_student()、update_student()、delete_student() 和 search_student()。这些按钮都被放置在窗口中的第 5 行,并分别占据第 0、1、2、3 列。
此外,还连接到了 MySQL 数据库,并执行了 SQL 语句“SELECT * FROM student_info”,将查询结果存储在 result 变量中,并使用 for 循环将每一行数据插入到 GUI 界面的标签中,以显示在窗口中。
最后,使用 mainloop() 方法来运行 GUI 应用程序,保持窗口的持续显示。
相关问题
name, gender, room = entry.split(",") ValueError: not enough values to unpack (expected 3, got 1)如何解决
出现这个错误是因为在使用`split()`函数分割`entry`时,没有得到预期的3个值(姓名、性别、房间号)。这可能是因为你的`entry`字符串不符合预期的格式,导致无法正确分割。
要解决这个问题,可以在使用`split()`函数之前,先确保`entry`字符串的格式正确。你可以使用`strip()`函数去除字符串两端的空格,然后再进行分割。
下面是修改后的代码示例:
```python
import tkinter as tk
import requests
class DormitoryManagementSystem:
def __init__(self):
self.students = []
self.window = tk.Tk()
self.window.title("学生宿舍管理系统")
self.label_name = tk.Label(self.window, text="姓名:")
self.label_name.grid(row=0, column=0)
self.entry_name = tk.Entry(self.window)
self.entry_name.grid(row=0, column=1)
self.label_gender = tk.Label(self.window, text="性别:")
self.label_gender.grid(row=1, column=0)
self.entry_gender = tk.Entry(self.window)
self.entry_gender.grid(row=1, column=1)
self.label_room = tk.Label(self.window, text="房间号:")
self.label_room.grid(row=2, column=0)
self.entry_room = tk.Entry(self.window)
self.entry_room.grid(row=2, column=1)
self.button_add = tk.Button(self.window, text="添加", command=self.add_student)
self.button_add.grid(row=3, column=0)
self.button_query = tk.Button(self.window, text="查询", command=self.query_student)
self.button_query.grid(row=3, column=1)
self.button_load = tk.Button(self.window, text="加载数据", command=self.load_data)
self.button_load.grid(row=4, column=0)
def add_student(self):
name = self.entry_name.get()
gender = self.entry_gender.get()
room = self.entry_room.get()
student = {"姓名": name, "性别": gender, "房间号": room}
self.students.append(student)
self.entry_name.delete(0, tk.END)
self.entry_gender.delete(0, tk.END)
self.entry_room.delete(0, tk.END)
def query_student(self):
name = self.entry_name.get()
for student in self.students:
if student["姓名"] == name:
messagebox.showinfo("查询结果", f"姓名:{student['姓名']}\n性别:{student['性别']}\n房间号:{student['房间号']}")
return
messagebox.showinfo("查询结果", "未找到该学生!")
def load_data(self):
url = "http://example.com/students.csv"
response = requests.get(url)
data = response.text.split("\n")
for entry in data:
entry = entry.strip() # 去除字符串两端的空格
if entry:
name, gender, room = entry.split(",")
student = {"姓名": name, "性别": gender, "房间号": room}
self.students.append(student)
def run(self):
self.window.mainloop()
if __name__ == "__main__":
system = DormitoryManagementSystem()
system.run()
```
在这个修改后的代码中,我们在使用`split()`函数分割`entry`之前,使用了`strip()`函数去除了字符串两端的空格,确保了分割之前的字符串格式正确。这样就可以避免`ValueError`错误的发生。
需求2:用户信息维护页面 [实验过程参考] : 右图是管理员用户的“用户信息维护界面”。 1、新建一个列表,用来保存学生用户的所有信息。 随便添加几个信息即可(例如,姓名、性别、手机号...) 。 2、实现右图所示的界面。 3、定义一个增加用户信息的函数。 4、定义一个删除用户信息的函数。 5、定义一个修改用户信息的函数(判断学生信息表是否为空)。 6、定义一个查询显示用户信息的函数(单个用户or全部用户) 单个用户- >用根据用户名查询。 全部户- >遍历列表并输出。 7、在if_ name_ == '_ _main__ ' :执行不同的功能(打印菜单、根据用户输入的序号决定程序励能的
功能等)。
感谢您的提问!以下是ChitGPT的回答:
你好,关于您的问题,我可以帮您提供以下回答:
1. 新建一个列表,用来保存学生用户的所有信息。可以使用Python中的list数据类型来实现,将每个学生的信息保存为一个字典,再将字典加入到列表中。
示例代码:
student_list = []
student1 = {'name': '张三', 'gender': '男', 'phone_number': '13800000001'}
student2 = {'name': '李四', 'gender': '女', 'phone_number': '13800000002'}
student_list.append(student1)
student_list.append(student2)
2. 实现右图所示的界面。可以使用Python的tkinter模块来实现图形化界面。
示例代码:
import tkinter as tk
# 创建窗口
window = tk.Tk()
window.title('用户信息维护界面')
window.geometry('400x300')
# 添加控件
label1 = tk.Label(window, text='姓名')
label1.grid(row=0, column=0)
entry1 = tk.Entry(window)
entry1.grid(row=0, column=1)
label2 = tk.Label(window, text='性别')
label2.grid(row=1, column=0)
entry2 = tk.Entry(window)
entry2.grid(row=1, column=1)
label3 = tk.Label(window, text='手机号')
label3.grid(row=2, column=0)
entry3 = tk.Entry(window)
entry3.grid(row=2, column=1)
button1 = tk.Button(window, text='增加', command=add_student)
button1.grid(row=3, column=0)
button2 = tk.Button(window, text='删除', command=delete_student)
button2.grid(row=3, column=1)
button3 = tk.Button(window, text='修改', command=update_student)
button3.grid(row=4, column=0)
button4 = tk.Button(window, text='查询', command=query_student)
button4.grid(row=4, column=1)
# 指定程序的入口点
if __name__ == '__main__':
window.mainloop()
3. 定义一个增加用户信息的函数。
示例代码:
def add_student():
name = entry1.get()
gender = entry2.get()
phone_number = entry3.get()
# 将学生信息保存为字典
student = {'name': name, 'gender': gender, 'phone_number': phone_number}
# 将学生信息加入到列表中
student_list.append(student)
4. 定义一个删除用户信息的函数。
示例代码:
def delete_student():
name = entry1.get()
for student in student_list:
if student['name'] == name:
student_list.remove(student)
5. 定义一个修改用户信息的函数(判断学生信息表是否为空)。
示例代码:
def update_student():
if len(student_list) == 0:
print('学生信息表为空')
return
name = entry1.get()
for student in student_list:
if student['name'] == name:
student['gender'] = entry2.get()
student['phone_number'] = entry3.get()
6. 定义一个查询显示用户信息的函数(单个用户or全部用户)
- 单个用户- >用根据用户名查询。
示例代码:
def query_student():
name = entry1.get()
for student in student_list:
if student['name'] == name:
print(student)
return
print('找不到该学生')
- 全部用户- >遍历列表并输出。
示例代码:
def query_student():
for student in student_list:
print(student)
7. 在if_ name_ == '_ _main__ ' :执行不同的功能(打印菜单、根据用户输入的序号决定程序励能的功能等)。
示例代码:
def menu():
print('1. 增加学生信息')
print('2. 删除学生信息')
print('3. 修改学生信息')
print('4. 查询学生信息')
print('0. 退出程序')
def main():
while True:
menu()
choice = input('请输入操作序号:')
if choice == '1':
add_student()
elif choice == '2':
delete_student()
elif choice == '3':
update_student()
elif choice == '4':
query_student()
elif choice == '0':
break
else:
print('输入有误,请重新输入')
if __name__ == '__main__':
main()