def del_row(value, tab_name='tbCourse', col_name='Cno'):
"""删除指定行数据"""
connection = pymysql.connect(host=db_config.HOST,
user=db_config.USER,
port=db_config.DB_PORT,
password=db_config.PWD,
database=db_config.DB_NAME,
cursorclass=pymysql.cursors.Cursor)
with connection:
try:
with connection.cursor() as cursor:
sql = f"DELETE FROM {tab_name} WHERE {col_name}=%s;"
affected_rows = cursor.execute(sql, (value,))
connection.commit()
except Exception as e:
print(f"删除错误: {e}")
return 0
return affected_rows根据上述函数,修改一下代码使之可以实现删除数据的功能import FreeSimpleGUI as sg
#需要切换为MySQL数据库,请将fetch_data_mssql更改为:fetch_data_mysql
from fetch_data_mysql import getData, del_row, insert_row,insert_workrow,getData_aim
from db_config import get_header
def open_homework_delet():
"""打开删除作业数据的窗口"""
sublayout_homedelete = [
[sg.T('请输入要删除的学号:', justification='right'),
sg.Input('', size=(50, None), key='-sub_Sno-')],
[sg.Button('查询', key='-btn_homework_search-'),
sg.Button('确认删除', key='-btn_homework_delet', disabled=True)]
]
subwin_homeworkdelete = sg.Window('数据删除', sublayout_homedelete,
font=('微软雅黑', 13), modal=True)
result = None
while True:
ev2, vals2 = subwin_homeworkdelete.read()
if ev2 in (sg.WIN_CLOSED, 'Exit'):
break
elif ev2 == '-btn_homework_search-':
student_id = vals2['-sub_Sno-'].strip()
if not student_id:
sg.popup("请输入学号")
continue
# 查询该学号的作业记录
result = getData_aim(student_id, tab_name='homework')
if result:
# 显示查询结果
headers = get_header(tab_name='homework')
table_layout = [
[sg.Table(
values=result,
headings=headers,
auto_size_columns=True,
display_row_numbers=True,
justification='left',
num_rows=min(5, len(result)),
key='-RESULT_TABLE-'
)],
[sg.Text(f"找到 {len(result)} 条记录,确认删除吗?")]
]
# 启用删除按钮
subwin_homeworkdelete['-btn_homework_delet'].update(disabled=False)
# 添加结果表格
if hasattr(subwin_homeworkdelete, 'result_frame'):
subwin_homeworkdelete['-RESULT_FRAME-'].update(visible=True)
subwin_homeworkdelete['-RESULT_TABLE-'].update(result)
else:
frame = sg.Frame('查询结果', table_layout, key='-RESULT_FRAME-')
subwin_homeworkdelete.extend_layout(sublayout_homedelete, [[frame]])
else:
sg.popup("未找到相关记录")
if hasattr(subwin_homeworkdelete, 'result_frame'):
subwin_homeworkdelete['-RESULT_FRAME-'].update(visible=False)
subwin_homeworkdelete['-btn_delete-'].update(disabled=True)
elif ev2 == '-btn_homework_delet' and result:
# 确认删除
if sg.popup_yes_no('确定要删除这些记录吗?此操作不可恢复!') == 'Yes':
# 执行删除操作
affected_rows = del_row(vals2['-sub_Sno-'], tab_name='homework', col_name='Sno')
if affected_rows > 0:
sg.popup(f"成功删除 {affected_rows} 条记录")
result = None
subwin_homeworkdelete['-RESULT_FRAME-'].update(visible=False)
subwin_homeworkdelete['-btn_delete-'].update(disabled=True)
else:
sg.popup("删除失败,请重试")
subwin_homeworkdelete.close()if __name__ == '__main__':
sg.theme('DefaultNoMoreNagging')
data_ducsum = getData(tab_name='ducsum')
header_ducsum = get_header(tab_name='ducsum')
data_homework = getData(tab_name='homework')
header_homework = get_header(tab_name='homework')
data_courses = getData(tab_name='tbcourse')
header_courses = get_header(tab_name='course')
data_students = getData(tab_name='tbStuinfo')
header_students = get_header(tab_name='student')
header_sc = get_header(tab_name='sc')
homework_layout = [
[sg.InputText(),sg.Button(button_text='搜索',key='-btn_homework_search'),
sg.Button(button_text='添加',key='-btn_add_homework'),
sg.Button(button_text='删除',key='-btn_homework_delet'),
sg.Button(button_text='修改')
],
[sg.Table(values=data_homework,
headings=header_homework,
size=(550,400),
max_col_width=100,
auto_size_columns=False,
display_row_numbers=False,
justification='left',
num_rows=15,
alternating_row_color='lightyellow',
key='-TABLE_course-',
selected_row_colors='red on yellow',
enable_events=True,
expand_x=True,
expand_y=True,
enable_click_events=True, # Comment out to not enable header and other clicks
tooltip='This is a course table')
],
[sg.Button(button_text='上一页', key='-btn_refresh_course-'),
sg.Button(button_text='下一页', key='-btn_del_course-')
]
]window = sg.Window('课后作业评分系统', layout,
default_element_size=(10, 1),size=(740,580), font=('微软雅黑', 14))
cur_cno=None #当前的选择的课程号
cur_course_row_number=None #当前课程表中被选择的行号,行号从0开始,-1为标题行
subwin_addCourse_active = False
subwin_addCourse = None
while True:
event, values = window.read()
# sg.popup_non_blocking(event, values)
# print(event)
# print(values)
if event == sg.WIN_CLOSED: # always, always give a way out!
break
if event=='-btn_del_course-':
# 删除选择的课程号
aff_rows = del_row(cno=cur_cno, tab_name='tbCourse')
print('影响的行数:', aff_rows)
if(aff_rows>0):
data_courses = list(data_courses)
data_courses.pop(cur_course_row_number) #从数据表格中移除选择的行数据
window['-TABLE_course-'].update(data_courses)
cur_course_row_number = None
cur_cno = None
elif event=='-btn_add_course-':
# 添加课程
# 先弹窗,获取信息
add_affected_rows = open_addCourseWindow()
if add_affected_rows>0:
data_courses = refreshData(table_key='-TABLE_course-', tab_name='tbcourse')
elif event=='-btn_refresh_course-':
# 刷新课程表的显示
data_courses = refreshData(table_key='-TABLE_course-', tab_name='tbcourse')
elif event=='-btn_add_homework':
add_affected_row = open_addHomeworkWindow()
if add_affected_row>0:
data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse')
elif event=='-btn_hundred_system':
add_affected_row = open_hundredsystem()
if add_affected_row>0:
data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse')
elif event=='-btn_rank_system':
add_affected_row = open_rank_system()
if add_affected_row>0:
data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse')
elif event=='-btn_homework_search':
add_affected_row = open_homework_search()
if add_affected_row>0:
data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse')
elif event=='-btn_homework_delet':
add_affected_row = open_homework_delet()
if add_affected_row>0:
data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse')
if isinstance(event, tuple):
# TABLE CLICKED Event has value in format ('-TABLE-', '+CLICKED+', (row,col))
if event[0] == '-TABLE_course-':
cur_course_row_number = event[2][0]
col_number = event[2][1]
if cur_course_row_number is not None:
# 获取鼠标点击行的数据
cur_row_value = data_courses[cur_course_row_number]
# 获取点击行的Cno
cur_cno = cur_row_value[0]
print('当前选择的课程号:', cur_cno)
window.close()
最新发布