python办公自动基础代码

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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值