首页 > 编程语言 >GUI程序设计--班级信息收集系

GUI程序设计--班级信息收集系

时间:2023-12-18 17:58:14浏览次数:40  
标签:班级 name -- GUI tk query entry root class

import pandas as pd
import tkinter as tk
from tkinter import messagebox

# 创建数据库表
# Excel表中必须包含学号、班级、姓名这三列
class_info = pd.read_excel('student.xlsx')

# 创建GUI程序
root = tk.Tk()
root.title('班级信息收集')

# 设置窗口大小
window_width = 400
window_height = 300

# 获取屏幕宽度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

# 计算窗口居中时的位置
x = (screen_width - window_width) // 2
y = (screen_height - window_height) // 2

# 设置窗口初始位置和大小
root.geometry(f'{window_width}x{window_height}+{x}+{y}')


# 注册函数
def register():
global class_info
student_id = entry_id.get()
class_name = entry_class.get()
student_name = entry_name.get()

if not student_id or not class_name or not student_name:
messagebox.showerror('错误', '请填写完整信息')
else:
# 检查学号是否已存在
if student_id in class_info['学号'].values:
messagebox.showerror('错误', '该学号已被注册')
else:
# 添加新记录
new_record = pd.DataFrame({'学号': [student_id], '班级': [class_name], '姓名': [student_name]})
class_info = class_info._append(new_record, ignore_index=True)
messagebox.showinfo('成功', '注册成功')
class_info.to_excel('students.xlsx', index=False)


# 查询函数
def query():
student_name = entry_query_name.get()
class_name = entry_query_class.get()
if not class_name or not student_name:
messagebox.showerror('错误', '请填写完整信息')
else:
result = class_info[(class_info['姓名'] == student_name) & (class_info['班级'] == class_name)]['学号']
if len(result) == 0:
messagebox.showinfo('查询结果', '未找到该同学')
else:
messagebox.showinfo('查询结果', f'学号为: {result.values[0]}')


# 创建注册表单
label_id = tk.Label(root, text='学号', font=('Arial', 12), padx=10, pady=5)
label_id.grid(row=0, column=0)
entry_id = tk.Entry(root, font=('Arial', 12))
entry_id.grid(row=0, column=1)

label_class = tk.Label(root, text='班级', font=('Arial', 12), padx=10, pady=5)
label_class.grid(row=1, column=0)
entry_class = tk.Entry(root, font=('Arial', 12))
entry_class.grid(row=1, column=1)

label_name = tk.Label(root, text='姓名', font=('Arial', 12), padx=10, pady=5)
label_name.grid(row=2, column=0)
entry_name = tk.Entry(root, font=('Arial', 12))
entry_name.grid(row=2, column=1)

button_register = tk.Button(root, text='注册', font=('Arial', 12), bg='white', fg='black', command=register)
button_register.grid(row=3, column=0, columnspan=2, padx=10, pady=5)

# 创建查询表单
label_query_class = tk.Label(root, text='查询班级', font=('Arial', 12), padx=10, pady=5)
label_query_class.grid(row=4, column=0)
entry_query_class = tk.Entry(root, font=('Arial', 12))
entry_query_class.grid(row=4, column=1)

label_query_name = tk.Label(root, text='查询姓名', font=('Arial', 12), padx=10, pady=5)
label_query_name.grid(row=5, column=0)
entry_query_name = tk.Entry(root, font=('Arial', 12))
entry_query_name.grid(row=5, column=1)

button_query = tk.Button(root, text='查询', font=('Arial', 12), bg='white', fg='black', command=query)
button_query.grid(row=6, column=0, columnspan=2, padx=10, pady=5)

root.mainloop()

 

标签:班级,name,--,GUI,tk,query,entry,root,class
From: https://www.cnblogs.com/qiebunaire/p/17911798.html

相关文章

  • 电工——保护接零、保护接地、工作接地、重复接地的区别
     TT系统左边Rb位置是中性接地(保护零线),也是工作接地右边Ra位置是用电器保护接地,也是外壳接地,为了在线绝缘皮破损时防止壳体带电 TN-C系统Rb位置工作接地N是工作零线PE是保护零线PEN就是二合一,不管是接地还是当零线都可以如果断路,直接电流直接通过PEN线,触发保护装置,蓝......
  • flutter屏幕适配方案
    使用MediaQuery和比例因子优点:使用简单,可以处理大多数情况下的屏幕适配需求。缺点:需要手动计算比例因子,并且随着UI元素变得更加复杂和层次化(例如多层次列表或动画效果),使用此方法可能会变得更加困难。import'package:flutter/material.dart';classMyAppextendsStatelessW......
  • CF333D 另一种做法
    前言duel的时候做的题,做出来的时候感觉很神,看了题解做法感觉自己是个傻逼。本做法时间复杂度是\(O(n^{\tfrac{5}{2}})\),可以作为补充了解。题解一个矩阵四个角的最大值有点烦,我们把它们排序,从小到大依次插入,则问题变为:在\(n\timesm\)的平面中,每次插入一个点,求在什么时候......
  • LVM磁盘
    深入了解Linux中的逻辑卷管理(LVM)Linux作为一种强大的操作系统,提供了多种高级磁盘管理技术,其中之一就是逻辑卷管理(LogicalVolumeManagement,简称LVM)。LVM允许对磁盘空间进行更灵活、更动态的管理,提高了系统对存储资源的利用率。在这篇博客中,我们将深入研究Linux中LVM的概......
  • 08 MVVM框架
    08MVVM框架WPF是WindowsPresentationFoundation的缩写,它是一种用于创建桌面应用程序的用户界面框架。WPF支持多种开发模式,其中一种叫做MVVM(Model-View-ViewModel)。在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xa......
  • 羽毛球比赛
      print('学号后两位:18')print('22信计1马樱萁,2022310143018')deffirst():print("这个程序模拟两个选手A和B的羽毛球竞技比赛")print("程序运行需要A和B的能力值(以0到1之间的小数表示)")defsecond():a=float(input("请输入选手A的能力值(0-1):"))b=fl......
  • flutter中显示年月日、星期与时间
    代码import'package:flutter/material.dart';import'package:intl/intl.dart';import'dart:async';import'package:intl/date_symbol_data_local.dart';//添加此行classDateWidgetextendsStatefulWidget{@override_......
  • shell脚本检测ssl证书有效时间
     [ytx@workshell]$catssl_check.sh#!/bin/bash#设置要检查的域名和端口DOMAIN="www.xxx.com"#域名PORT=443#端口#获取SSL证书信息CERT_INFO=$(openssls_client-connect${DOMAIN}:${PORT}-servername${DOMAIN}-showcerts</dev/null2>/dev......
  • redis实践经验总结
    Redis内存配置当Redis内存不足时,可能导致Key频繁被删除、响应时间变长、QPS不稳定等问题。当内存使用率达到80%以上时就需要我们警惕,并快速定位到内存占用的原因。一般来说,会有以下几种占用内存的情况:数据内存是Redis最主要的部分,存储Redis的键值信息。主要问题是BigKey问题......
  • Numpy 等函数的读书报告
    importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['axes.unicode_minus']=Falseplt.rcParams['font.sans-serif']='SimHei'matplotlib使用里面的函数读取图片,输出图片对应的数组#matplotlib使用里面的函数读取图片,输出图片对应......