最近有不少小伙伴問我,Python 怎么學,我的統一回答:就是實戰,多練,無論做什么,都逃不過熟能生巧,其次就是從自己的興趣出發,做一些實戰小專案,往往一些小專案都藏著很多基礎,這周在家閑著的時候給大家用Python寫了一個疫苗管理系統的小專案,很適合新手練習,主要涉及的知識有Python、tkinter、資料庫存盤等,(https://jq.qq.com/?_wv=1027&k=EBXZ9r6u)

整體結構圖

連接資料庫
def connect_DBS(self, database, content): db = pymysql.connect(host="localhost", user="root", password="pwd", database=database) cursor = db.cursor() cursor.execute(content) data = cursor.fetchone() db.commit() db.close() return data
主界面

def main_window(self): tk.Button(app, text='登錄', bg='white', font=("Arial,12"), width=12, height=1, command=self.login).place(x=260, y=200) tk.Button(app, text='注冊', bg='white', font=("Arial,12"), width=12, height=1, command=self.register).place(x=260, y=240) tk.Button(app, text='退出', bg='white', font=("Arial,12"), width=12, height=1, command=self.quit_mainloop).place(x=260, y=280)
注冊界面

# def register(self): register = tk.Toplevel(app) register.title('用戶注冊') register.geometry("600x400") tk.Label(register, text="歡迎注冊", font=("KaiTi", 40)).place(x=200, y=20) tk.Label(register, text='添加管理員姓名:', font=("Arial", 9)).place(x=80, y=120) tk.Label(register, text='確認管理員編號:', font=('Arial', 9)).place(x=80, y=150) entry1 = tk.Entry(register, font=("Arial, 9"), width=46, ) entry2 = tk.Entry(register, font=("Arial, 9"), width=46, ) entry1.pack() entry2.pack() entry1.place(x=180, y=120, width=350, height=25) entry2.place(x=180, y=150, width=350, height=25) def user_register(): user_name = entry1.get() user_code = entry2.get() if user_name == "" or user_code == "": tkinter.messagebox.showwarning(title="警告", message="用戶名或密碼不能為空!") else: content = "INSERT INTO user_info (user_name, user_code) VALUES ('%s', '%s');" % (user_name, user_code) self.connect_DBS(database="vaccine_info", content=content) tkinter.messagebox.showinfo(title="資訊", message="注冊成功!") tk.Button(register, text="注冊", bg='white', font=("Arial,9"), width=12, height=0, command=user_register).place(x=250, y=250)
登陸界面

# def login(self): login = tk.Toplevel(app) login.title('用戶登錄') login.geometry("600x400") tk.Label(login, text="歡迎登錄", font=("KaiTi", 40)).place(x=200, y=20) tk.Label(login, text='管理員姓名:', font=("Arial", 9)).place(x=80, y=120) tk.Label(login, text='管理員編號:', font=('Arial', 9)).place(x=80, y=150) entry1 = tk.Entry(login, font=("Arial, 9"), width=46) entry2 = tk.Entry(login, font=("Arial, 9"), width=46, show="*") entry1.pack() entry2.pack() entry1.place(x=180, y=120, width=350, height=25) entry2.place(x=180, y=150, width=350, height=25) def user_check(): user_name = entry1.get() user_code = entry2.get() content = "SELECT * FROM user_info WHERE user_name = '%s';" % user_name data = self.connect_DBS(database="vaccine_info", content=content) try: if user_name == data[1] and user_code == data[2]: tkinter.messagebox.showinfo(title="資訊", message="歡迎登錄!") self.options() elif user_name != data[1]: tkinter.messagebox.showerror(title="錯誤", message="請注冊后再進行登錄!") elif user_name == data[1] and user_code != data[2]: tkinter.messagebox.showerror(title="錯誤", message="密碼錯誤!") except TypeError: tkinter.messagebox.showerror(title="錯誤", message="請注冊后再進行登錄!") tk.Button(login, text="登錄", bg='white', font=("Arial,9"), width=12, height=0, command=user_check).place(x=250, y=250)
