6.11打卡
今天写了python大作业的学生功能页代码
import tkinter as tk
from tkinter import messagebox
import database as db
def center_window(window, width=400, height=300):
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
window.geometry(f'{width}x{height}+{int(x)}+{int(y)}')
def show_student_main_page(username):
main_page = tk.Tk()
main_page.title("学生主页面")
main_page.geometry("1000x600")
center_window(main_page, 1000, 600)
student_label = tk.Label(main_page, text=f"欢迎学生: {username}", font=('Arial', 18))
student_label.pack(pady=20)
view_dormitory_info_button = tk.Button(main_page, text="查看宿舍信息",
command=lambda: view_dormitory_info(username, main_page), width=20, height=2,
bg='#0F6DF0', fg='white', borderwidth=0, relief="flat")
view_dormitory_info_button.pack(pady=10)
request_maintenance_button = tk.Button(main_page, text="报修请求",
command=lambda: request_maintenance(username, main_page), width=20, height=2,
bg='#0F6DF0', fg='white', borderwidth=0, relief="flat")
request_maintenance_button.pack(pady=10)
swap_rooms_button = tk.Button(main_page, text="调换宿舍", command=lambda: swap_rooms(username, main_page), width=20,
height=2, bg='#0F6DF0', fg='white', borderwidth=0, relief="flat")
swap_rooms_button.pack(pady=10)
main_page.mainloop()
def view_dormitory_info(username, main_page):
clear_window(main_page)
main_page.title("查看宿舍信息")
main_page_button = tk.Button(main_page, text="回到主页面", command=lambda: show_student_main_page(username),
bg='#0F6DF0', fg='white', borderwidth=0, relief="flat", padx=10, pady=5)
main_page_button.place(relx=0.9, rely=0.02)
dorm_info = db.get_dormitory_info(username)
if dorm_info:
dorm_name, floors, rooms_per_floor, gender, room_number = dorm_info
info_label = tk.Label(main_page, text=f"宿舍楼名称: {dorm_name}\n楼层数: {floors}\n每层房间数: {rooms_per_floor}\n宿舍楼性别: {gender}\n房间号: {room_number}",
font=('Arial', 14))
info_label.pack(pady=20)
roommates = db.get_roommates(username)
roommates_label = tk.Label(main_page, text="室友列表:", font=('Arial', 14))
roommates_label.pack(pady=10)
for roommate in roommates:
roommate_name = roommate[1]
roommate_label = tk.Label(main_page, text=f"室友姓名: {roommate_name}", font=('Arial', 12))
roommate_label.pack()
def request_maintenance(username, main_page):
clear_window(main_page)
main_page.title("报修请求")
main_page_button = tk.Button(main_page, text="回到主页面", command=lambda: show_student_main_page(username),
bg='#0F6DF0', fg='white', borderwidth=0, relief="flat", padx=10, pady=5)
main_page_button.place(relx=0.9, rely=0.02)
dormitory_id, room_number = db.get_user_info(username)
description_label = tk.Label(main_page, text="报修描述:")
description_label.place(relx=0.3, rely=0.2, anchor=tk.E)
description_entry = tk.Entry(main_page, relief="flat")
description_entry.place(relx=0.6, rely=0.2, anchor=tk.CENTER)
def submit_request():
description = description_entry.get()
db.insert_maintenance_request(username, dormitory_id, room_number, description)
messagebox.showinfo("成功", "报修请求提交成功", parent=main_page)
submit_button = tk.Button(main_page, text="提交", command=submit_request, bg='#0F6DF0', fg='white', borderwidth=0,
relief="flat", padx=10, pady=5)
submit_button.place(relx=0.5, rely=0.3, anchor=tk.CENTER)
def swap_rooms(username, main_page):
clear_window(main_page)
main_page.title("调换宿舍")
main_page_button = tk.Button(main_page, text="回到主页面", command=lambda: show_student_main_page(username),
bg='#0F6DF0', fg='white', borderwidth=0, relief="flat", padx=10, pady=5)
main_page_button.place(relx=0.9, rely=0.02)
partner_label = tk.Label(main_page, text="调换宿舍伙伴的学号:")
partner_label.place(relx=0.3, rely=0.2, anchor=tk.E)
partner_entry = tk.Entry(main_page, relief="flat")
partner_entry.place(relx=0.6, rely=0.2, anchor=tk.CENTER)
def submit_swap_request():
partner_username = partner_entry.get()
partner_request = db.check_partner_request(partner_username, username)
if partner_request:
partner_request_id = partner_request[0]
requester_username = partner_request[1]
partner_username = partner_request[2]
dormitory_id, room_number = db.get_user_info(requester_username)
db.update_user_room(requester_username, *db.get_user_info(partner_username))
db.update_user_room(partner_username, dormitory_id, room_number)
db.approve_room_swap_request(partner_request_id)
messagebox.showinfo("成功", "宿舍调换成功", parent=main_page)
else:
db.insert_room_swap_request(username, partner_username)
messagebox.showinfo("成功", "宿舍调换请求已发送,宿舍调换还需另一方发送请求", parent=main_page)
submit_button = tk.Button(main_page, text="提交", command=submit_swap_request, bg='#0F6DF0', fg='white', borderwidth=0,
relief="flat", padx=10, pady=5)
submit_button.place(relx=0.5, rely=0.3, anchor=tk.CENTER)
def clear_window(window):
for widget in window.winfo_children():
widget.destroy()