行业知识
PythonStudio:国人开发的python窗体IDE,学生管理系统
2026-11-03 05:26:14
来源:互联网转载
国人开发���python窗体设计IDE,详情请看:PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了-CSDN博客
这个软件作者还录制了入门的教程,跟着视频做,是个不错的python视频教程呢。从软件的使用,窗体的设计,到python的学习, 对小白来说很友好啊。
最最最主要的,这个软件自带很多皮肤,漂亮的皮肤。
我跟着教程做这个学生信息管理系统,感觉使用它来做python窗口软件程序,真的很方便快捷。
Project1.py
from delphivcl import *from Unit1 import *def main(): Application.Initialize() Application.Title = '学生管理系统' MainForm = Form1(Application) MainForm.Show() FreeConsole() Application.Run()if __name__ == '__main__': main()
Unit1.py
import osfrom delphivcl import *from Unit2 import *from Unit3 import *from Unit4 import *from Unit5 import *class Form1(Form): def __init__(self, owner): self.Button7 = Button(self) self.Button6 = Button(self) self.Button5 = Button(self) self.Button4 = Button(self) self.Button3 = Button(self) self.Button2 = Button(self) self.Button1 = Button(self) self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit1.pydfm")) self.Button5.OnClick = self.Button5Click self.Button4.OnClick = self.Button4Click self.Button6.OnClick = self.Button6Click self.Button1.OnClick = self.Button1Click self.sm = StyleManager() self.sm.LoadFromFile("Windows10Malibu.vsf") self.sm.SetStyle('Windows10 Malibu') def Button1Click(self, Sender): frmAdd = Form2(self) frmAdd.ShowModal() def Button6Click(self, Sender): frmSearch = Form3(self) frmSearch.ShowModal() def Button4Click(self, Sender): frmDelete = Form4(self) frmDelete.ShowModal() def Button5Click(self, Sender): frmModify = Form5(self) frmModify.ShowModal() Unit2.py
import osfrom delphivcl import *filename = 'Students.txt' # 定义学生信息文件class Form2(Form): def __init__(self, owner): self.BitBtn3 = BitBtn(self) self.BitBtn2 = BitBtn(self) self.BitBtn1 = BitBtn(self) self.LabeledEdit5 = LabeledEdit(self) self.LabeledEdit4 = LabeledEdit(self) self.LabeledEdit3 = LabeledEdit(self) self.LabeledEdit2 = LabeledEdit(self) self.LabeledEdit1 = LabeledEdit(self) self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit2.pydfm")) self.BitBtn2.OnClick = self.BitBtn2Click self.BitBtn1.OnClick = self.BitBtn1Click def insert(self): '''录入学生信息''' studentList = [] # 保存学生信息的列表 stu_id = self.LabeledEdit1.Text if not stu_id: # stu_id 为空 ShowMessage('ID不能为空!') return stu_name = self.LabeledEdit2.Text if not stu_name: # stu_name 为空 ShowMessage('姓名不能为空!') return try: english = int(self.LabeledEdit3.Text) jsj = int(self.LabeledEdit4.Text) stu_math = int(self.LabeledEdit5.Text) except: ShowMessage('成绩应该是数值!') return student = { 'id':stu_id, 'name':stu_name, 'english':english, 'jsj':jsj, 'math':stu_math, } studentList.append(student) # 保存到文件里 self.fileSave(studentList) ShowMessage('学生信息录入完成') def fileSave(self,student): '''将学生信息保存到文件''' try: stu_file = open(filename,'a') except Exception as e: stu_file = open(filename,'w') # 文件不存在就创建 for info in student: stu_file.write(str(info)+'\n') # 按行存储 stu_file.close() def BitBtn1Click(self, Sender): self.insert() def BitBtn2Click(self, Sender): self.LabeledEdit1.Clear() self.LabeledEdit2.Clear() self.LabeledEdit3.Clear() self.LabeledEdit4.Clear() self.LabeledEdit5.Clear() Unit3.py
import osfrom delphivcl import *filename = 'Students.txt' # 定义学生信息文件class Form3(Form): def __init__(self, owner): self.Button2 = Button(self) self.Button1 = Button(self) self.Edit1 = Edit(self) self.Memo1 = Memo(self) self.RadioGroup1 = RadioGroup(self) self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit3.pydfm")) self.Button2.OnClick = self.Button2Click self.Button1.OnClick = self.Button1Click def search(self): '''查找学生信息''' student_query = [] stu_id = "" stu_name="" if os.path.exists(filename): mode = self.RadioGroup1.ItemIndex if mode == 0: stu_id = self.Edit1.Text elif mode == 1: stu_name = self.Edit1.Text else: ShowMessage('输入不能为空!') return with open(filename,'r') as file: # 打开文件 student = file.readlines() # 读取所有行 for list in student: dic = dict(eval(list)) # 字符串转换成字典 if stu_id is not "": # id 不为空 if dic['id']==stu_id: student_query.append(dic) # 将找到的学生信息保存到列表 elif stu_name is not "": # name 不为空 if dic['name']==stu_name: student_query.append(dic) # 使用函数显示查询结果 self.show_student(student_query) student_query.clear() # 清空列表 else: # 文件不存在 ShowMessage('数据信息未保存!!') def show_student(self,studentList): '''将保存在列表的学生信息显示出来''' if not studentList: self.Memo1.Lines.Add('无数据显示') return # 使用空格,显示的更整齐 format_title = "{:^4}\t{:^4}\t{:^4}\t{:^6}\t{:^10}\t{:^10}" count = self.Memo1.Lines.Count if count Unit4.py
import osfrom delphivcl import *filename = 'Students.txt' # 定义学生信息文件class Form4(Form): def __init__(self, owner): self.Button2 = Button(self) self.Button1 = Button(self) self.LabeledEdit1 = LabeledEdit(self) self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit4.pydfm")) self.Button2.OnClick = self.Button2Click self.Memo1 = Memo(self) self.RadioGroup1 = RadioGroup(self) def delete(self): '''删除学生信息''' stu_id = self.LabeledEdit1.Text if stu_id is not "": # 输入不为空 if os.path.exists(filename): with open(filename,'r') as file: student_old = file.readlines() else: student_old = [] flag = False if student_old: # 如果存在 with open(filename,'w') as wfile: doc = {} for list in student_old: doc = dict(eval(list)) # 字符串转换成字典 if doc['id'] != stu_id: wfile.write(str(doc)+'\n') else: flag = True if flag: self.Memo1.Lines.Add(f'ID为{stu_id}的学生信息已删除') else: self.Memo1.Lines.Add(f'未找到ID为{stu_id}的学生信息') else: self.Memo1.Lines.Add('无该学生信息') return # 显示全部学生信息 def show_student(self,studentList): '''将保存在列表的学生信息显示出来''' if not studentList: self.Memo1.Lines.Add('无数据显示') return # 使用空格,显示的更整齐 format_title = "{:^4}\t{:^4}\t{:^4}\t{:^6}\t{:^10}\t{:^10}" count = self.Memo1.Lines.Count if count Unit5.py
import osfrom delphivcl import *filename = 'Students.txt' # 定义学生信息文件class Form5(Form): def __init__(self, owner): self.BitBtn4 = BitBtn(self) self.BitBtn3 = BitBtn(self) self.BitBtn2 = BitBtn(self) self.BitBtn1 = BitBtn(self) self.LabeledEdit5 = LabeledEdit(self) self.LabeledEdit4 = LabeledEdit(self) self.LabeledEdit3 = LabeledEdit(self) self.LabeledEdit2 = LabeledEdit(self) self.LabeledEdit1 = LabeledEdit(self) self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit5.pydfm")) self.BitBtn4.OnClick = self.BitBtn4Click self.BitBtn1.OnClick = self.BitBtn1Click def BitBtn1Click(self, Sender): '''修改学生信息''' stu_id = self.LabeledEdit1.Text name = self.LabeledEdit2.Text english = self.LabeledEdit3.Text jsj = self.LabeledEdit4.Text math = self.LabeledEdit5.Text if stu_id is not "": if name is not "": if english is not "": if jsj is not "": if math is not "": stu = dict() stu['id'] = stu_id stu['name'] = name stu['english'] = int(english) stu['jsj'] = int(jsj) stu['math'] = int(math) flag = False with open(filename,'r') as rfile: student_old = rfile.readlines() with open(filename,'w') as wfile: for student in student_old: stud = dict(eval(student)) if stud['id'] == stu_id: flag = True student = str(stu) # 将字典转换为字符串 wfile.write(student) if flag: ShowMessage('修改成功。。') else: ShowMessage('id不存在或数据未变化。。') else: ShowMessage('数学不能为空') return else: ShowMessage('计算机不能为空') return else: ShowMessage('英语不能为空') return else: ShowMessage('姓名不能为空') return else: ShowMessage('id不能为空') return def BitBtn4Click(self, Sender): '''查询学生信息''' stu_id = self.LabeledEdit1.Text if stu_id is not "": # 输入不为空 if os.path.exists(filename): with open(filename,'r') as file: student_old = file.readlines() else: student_old = [] ShowMessage('未保存数据') flag = False if student_old: # 如果存在 for list in student_old: doc = dict(eval(list)) # 字符串转换成字典 if doc['id'] == stu_id: flag = True self.LabeledEdit2.Text=doc['name'] self.LabeledEdit3.Text=doc['english'] self.LabeledEdit4.Text=doc['jsj'] self.LabeledEdit5.Text=doc['math'] if flag == False: ShowMessage('id不存在') self.LabeledEdit2.Text='' self.LabeledEdit3.Text='' self.LabeledEdit4.Text='' self.LabeledEdit5.Text='' else: ShowMessage('数据为空') else: ShowMessage('id不能为空') return # 显示全部学生信息 本来还有排序和显示2个窗体的,我没有做。我使用的是皮肤 Windows10 Malibu。
self.sm = StyleManager() self.sm.LoadFromFile("Windows10Malibu.vsf") self.sm.SetStyle('Windows10 Malibu') 3行代码,加个123kb的文件,就给几个窗口都换了皮肤了,真的方便啊。
PythonStudio用来做python窗体软件设计工具,真的很不错,大家赶快来试试吧。软件下载链接在顶部。
下一篇:美杜莎服务器怎么对接?