美文网首页
Python面向对象与GUI编程打造【万能信息管理系统】,包含登

Python面向对象与GUI编程打造【万能信息管理系统】,包含登

作者: Python案例教学 | 来源:发表于2021-11-10 15:49 被阅读0次

前言

使用面向对象与GUI编程,打造一个桌面版的万能信息管理系统。只要你修改下参数,它就能变成你想要的样子。比如:学生信息管理系统、员工信息管理系统、图书信息管理系统、蔬菜信息管理系统。这真是毕业设计、期末作业必备良药,老师看过都说好

先看下实现的效果

先是登录界面


输入设定好的账号密码后所显示的页面


登录窗口

先定义一个窗口对象

import tkinter

root = tkinter.Tk()

设置标题

root.title('学生信息管理系统')
root.geometry('300x180')

显示窗口

root.mainloop()

账户密码输入界面

tkinter.Label(login_frame, text='账户: ').grid(row=1, column=0)
tkinter.Entry(login_frame, textvariable=username).grid(row=1, column=1)

tkinter.Label(login_frame, text='密码: ').grid(row=2, column=0)
tkinter.Entry(login_frame, textvariable=password).grid(row=2, column=1)

tkinter.Button(login_frame, text='登录', command=check_login).grid(row=3, column=0)
tkinter.Button(login_frame, text='退出', command=root.quit).grid(row=3, column=1)

调整位置

tkinter.Label(login_frame, width=15).grid(row=0, column=0)

点击登录 校验参数

def check_login():
    print('检查登录')
    print('用户名:', username.get())
    print('密码:', password.get())
    # 数据存在那个地方 txt
    if username.get() == 'admin' and password.get() == '123456':
        print('登录成功')
    else:
        print('登录失败')

换页

login_frame = tkinter.Frame(root)
login_frame.grid()


if username.get() == 'admin' and password.get() == '123456':
    print('登录成功')
    # 换页
    login_frame.destroy()
else:
    print('登录失败')

系统显示页面

窗口

import tkinter

class MainPage:
    def __init__(self, root2):
        self.root = root2
        self.root.title('学生信息管理系统 v18.6.0')
        self.root.geometry('600x400')
        self.create_page()

root = tkinter.Tk()

MainPage(root)

root.mainloop()

设置菜单栏

    def create_page(self):
        menu_bar = tkinter.Menu(self.root)

        menu_bar.add_command(label='录入', command=self.show_insert_frame)
        menu_bar.add_command(label='查询', command=self.show_search_frame)
        menu_bar.add_command(label='删除')
        menu_bar.add_command(label='修改')
        menu_bar.add_command(label='关于', command=self.show_about_frame)

        self.root['menu'] = menu_bar  # 设置菜单栏

录入功能

界面

class InsertFrame(tkinter.Frame):
    # 继承
    def __init__(self, root):
        super().__init__(master=root)
        self.username = tkinter.StringVar()
        self.math = tkinter.StringVar()
        self.chinese = tkinter.StringVar()
        self.english = tkinter.StringVar()
        self.status = tkinter.StringVar()

        self.create_page()

    def create_page(self):
        # padding 边框 填充
        tkinter.Label(self, width=15).grid(row=0, column=0, padx=5, pady=5, )
        tkinter.Label(self, text='姓名: ').grid(row=1, column=0, padx=5, pady=5, )
        tkinter.Entry(self, textvariable=self.username).grid(row=1, column=1, padx=5, pady=5, )
        tkinter.Label(self, text='数学: ').grid(row=2, column=0, padx=5, pady=5, )
        tkinter.Entry(self, textvariable=self.math).grid(row=2, column=1, padx=5, pady=5, )
        tkinter.Label(self, text='语文: ').grid(row=3, column=0, padx=5, pady=5, )
        tkinter.Entry(self, textvariable=self.chinese).grid(row=3, column=1, padx=5, pady=5, )
        tkinter.Label(self, text='英语: ').grid(row=4, column=0, padx=5, pady=5, )
        tkinter.Entry(self, textvariable=self.english).grid(row=4, column=1, padx=5, pady=5, )

        tkinter.Button(self, text='录入', command=self._recode).grid(row=5, column=1)
        tkinter.Label(self, textvariable=self.status).grid(row=6, column=1)

录入数据

def _recode(self):
    print('记录数据的事件被触发了')
    stu = {
        "name": self.username.get(),
        "math": self.math.get(),
        "chinese": self.chinese.get(),
        "english": self.english.get()
    }
    db.insert(stu)
    self.status.set('数据插入成功')
    print(db.all())

相关文章

网友评论

      本文标题:Python面向对象与GUI编程打造【万能信息管理系统】,包含登

      本文链接:https://www.haomeiwen.com/subject/ahnmzltx.html