import xlwt,xlrd,pymysql import cx_Oracle as cx ##pip install pywin32 import win32api, win32con from tkinter import * import os import datetime import tkinter as tk from os import path from subprocess import Popen, PIPE from tkinter import ttk from tkinter.filedialog import askopenfilename from time import sleep import time import tkinter.messagebox import tkinter.filedialog import webbrowser try: print("数据库链接开始") # # connection = pymysql.connect(host="172.25.0.5",user="lftpro",password="ZKXC0831cnm",database='ora11g',port=1521,charset="utf8") # connection = cx.connect('lftpro', 'ZKXC0831cnm', '172.25.0.5:1521/ora11g') # print("数据库链接", connection.ping()) # curos=connection.cursor(buffered=True) # sql='select * from TB_ATTENDANCE_IMPORT where rownum<=1' # curos.execute(sql) # result=cursor.fetchone() # connection.close() # print("数据库查询结果",result) window = tk.Tk() window.title('欢迎使用Windows高级功能!') window.geometry('450x300') # 画布放置图片 canvas = tk.Canvas(window, height=400, width=500) canvas.pack(side='top') # 标签 用户名密码 tk.Label(window, text='用户名:').place(x=100, y=50) tk.Label(window, text='密码:').place(x=100, y=100) # 用户名输入框 var_usr_name = tk.StringVar() entry_usr_name = tk.Entry(window, textvariable=var_usr_name) entry_usr_name.place(x=160, y=50) # 密码输入框 var_usr_pwd = tk.StringVar() entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*') entry_usr_pwd.place(x=160, y=100) # 登录函数 def usr_log_in(): # 输入框获取用户名密码 usr_name = var_usr_name.get() usr_pwd = var_usr_pwd.get() # 从本地字典获取用户信息,如果没有则新建本地数据库 try: with open('usr_info.pickle', 'rb') as usr_file: usrs_info = pickle.load(usr_file) except FileNotFoundError: with open('usr_info.pickle', 'wb') as usr_file: usrs_info = {'admin': 'admin'} pickle.dump(usrs_info, usr_file) # 判断用户名和密码是否匹配 if usr_name in usrs_info: if usr_pwd == usrs_info[usr_name]: tk.messagebox.showinfo(title='welcome',message='欢迎您:' + usr_name) else: tk.messagebox.showerror(message='密码错误') # 用户名密码不能为空 elif usr_name == '' or usr_pwd == '': tk.messagebox.showerror(message='用户名或密码为空') # 不在数据库中弹出是否注册的框 else: is_signup = tk.messagebox.askyesno('欢迎', '您还没有注册,是否现在注册') if is_signup: usr_sign_up() # 注册函数 def usr_sign_up(): # 确认注册时的相应函数 def signtowcg(): # 获取输入框内的内容 nn = new_name.get() np = new_pwd.get() npf = new_pwd_confirm.get() # 本地加载已有用户信息,如果没有则已有用户信息为空 try: with open('usr_info.pickle', 'rb') as usr_file: exist_usr_info = pickle.load(usr_file) except FileNotFoundError: exist_usr_info = {} # 检查用户名存在、密码为空、密码前后不一致 if nn in exist_usr_info: tk.messagebox.showerror('错误', '用户名已存在') elif np == '' or nn == '': tk.messagebox.showerror('错误', '用户名或密码为空') elif np != npf: tk.messagebox.showerror('错误', '密码前后不一致') # 注册信息没有问题则将用户名密码写入数据库 else: exist_usr_info[nn] = np with open('usr_info.pickle', 'wb') as usr_file: pickle.dump(exist_usr_info, usr_file) tk.messagebox.showinfo('欢迎', '注册成功') # 注册成功关闭注册框 window_sign_up.destroy() # 新建注册界面 window_sign_up = tk.Toplevel(window) window_sign_up.geometry('350x200') window_sign_up.title('注册') # 用户名变量及标签、输入框 new_name = tk.StringVar() tk.Label(window_sign_up, text='用户名:').place(x=10, y=10) tk.Entry(window_sign_up, textvariable=new_name).place(x=150, y=10) # 密码变量及标签、输入框 new_pwd = tk.StringVar() tk.Label(window_sign_up, text='请输入密码:').place(x=10, y=50) tk.Entry(window_sign_up, textvariable=new_pwd, show='*').place(x=150, y=50) # 重复密码变量及标签、输入框 new_pwd_confirm = tk.StringVar() tk.Label(window_sign_up, text='请再次输入密码:').place(x=10, y=90) tk.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*').place(x=150, y=90) # 确认注册按钮及位置 bt_confirm_sign_up = tk.Button(window_sign_up, text='确认注册',command=signtowcg) bt_confirm_sign_up.place(x=150, y=130) # 退出的函数 def usr_sign_quit(): try: window.destroy() except: pass # 登录 注册按钮 bt_login = tk.Button(window, text='登录', command=usr_log_in) bt_login.place(x=140, y=150) bt_logup = tk.Button(window, text='注册', command=usr_sign_up) bt_logup.place(x=210, y=150) bt_logquit = tk.Button(window, text='退出', command=usr_sign_quit) bt_logquit.place(x=280, y=150) # 主循环 window.mainloop() except ZeroDivisionError as e: print(e)
python办公自动基础代码
最新推荐文章于 2024-09-10 08:25:17 发布