首页 > 解决方案 > 按下菜单按钮时无法读取数据

问题描述

from tkinter import *

win = Tk()
win.title('Grade Processing System')


file = open('markdata.dat')
for row in file:
    global grade_data
    grade_data = row.split('_')
    print(grade_data)


        
def data():
    global grade_data
    text.insert(END,('='*24+'markdata.dat'+'='*24+'\n'))
    text.insert(INSERT,file.read())

def grade121():
    grade121_stud = []
    for grade in grade_data:
        if grade[0] == '121':
            grade121_stud.append(grade)
    for student in grade121_stud:
        text.insert(END,student)

def grade122():
    grade122_stud = []
    for grade in grade_data:
        if grade[0] == '122':
            grade122_stud.append(grade)
    for student in grade122_stud:
        text.insert(END,student)
        
    
    
menubar = Menu(win)
menubar.add_command(label='Data file',command=data)
menubar.add_command(label='121 Grade',command=grade121)
menubar.add_command(label='122 Grade',command=grade122)
menubar.add_command(label='Distribution')
menubar.add_command(label='Help')
win.config(menu=menubar)

global text
yScrollBar = Scrollbar(win)
yScrollBar.pack(side=RIGHT,fill=Y)
text = Text(win,height=70,width=100)
text.pack()
yScrollBar.config(command=text.yview)
text.config(yscrollcommand=yScrollBar.set)

file.close()



markdata.dat
121_50123456_lam tai man_85.5_80.0_80.0_90.0
121_50223456_li tai man_61.0_90.5_60.0_55.5
121_50323456_wong tai man_90.0_30.0_50.0_79.5
121_50423456_ng tai man_62.75_70.0_65.5_48.5
121_50523456_lau tai man_58.0_62.4_86.55_70.0
121_50623456_chui tai man_31.0_64.5_46.0_29.5
121_50723456_lim tai man_86.45_60.0_88.5_89.5
121_50823456_pok tai man_53.0_35.50_75.5_49.5
121_50923456_kim tai man_58.25_80.0_36.0_56.5
121_50023456_tsang tai man_35.5_20.0_55.5_79.0
121_50713456_lee tai man_26.45_30.0_35.5_30.5
121_50813456_po tai man_23.0_35.50_25.5_29.5
121_50913456_yim tai man_18.25_40.0_36.0_26.5
121_50013456_tse tai man_5.5_20.0_5.5_9.0
121_50999999_chan peter_80.00_80.00_60.0_80.5
122_51123456_lam tai man_70.0_60.0_70.0
122_51223456_li tai man_60.0_90.5_76.0
122_51323456_wong tai man_34.5_30.0_46.0
122_51423456_ng tai man_90.5_70.0_56.0
122_51523456_lau tai man_86.0_92.4_58.0
122_51623456_chui tai man_70.0_64.5_62.0
122_51723456_lim tai man_64.5_60.0_36.0
122_51823456_pok tai man_37.5_35.50_68.5
122_51923456_kim tai man_82.4_60.0_46.5
122_51023456_tsang tai man_15.0_20.0_26.0
122_50713456_lee tai man_86.45_80.0_85.5
122_50813456_po tai man_23.0_35.50_25.5
122_50913456_yim tai man_18.25_40.0_36.0
122_50013456_tse tai man_65.5_20.0_65.5
122_51999999_chan peter_80.00_80.00_80.0

现在当我print(grade_data)工作时,但有一个问题是,如果我想读取 tkinter 的特定数据,例如当我按下按钮数据文件时,我想显示 markdata.dat 和 121 Grade 按钮的数据,我想显示Grade_data的第一个字符串等于121的数据。请问是for循环工作加载满足条件的行的数据吗?

标签: pythonlisttkinter

解决方案


推荐阅读