小工具知识网

当前位置: 首页 > 行业知识 > PythonStudio:国人开发的python窗体IDE,学生管理系统

行业知识

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窗体软件设计工具,真的很不错,大家赶快来试试吧。软件下载链接在顶部。

上一篇:源码评级大揭秘,深度解读,吸引力非凡!

下一篇:美杜莎服务器怎么对接?