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()

posted @ 2024-06-11 16:18  aallofitisst  阅读(26)  评论(0)    收藏  举报