登陆界面源码-

应粉丝要求上源码

# -*- coding=utf-8 -*-
# @Time : 2022/3/29 17:00
# @Author :zgz
# @File : login.py
# @Software : PyCharm
from tkinter import *
from tkinter import messagebox
from PIL import ImageTk
from PIL import Image
import pickle


def main():
    global root
    root = Tk()
    x = int(root.winfo_screenwidth() / 2 - root.winfo_reqwidth() / 2)
    y = int(root.winfo_screenheight() / 2 - root.winfo_reqheight() / 2)
    root.geometry(f'400x300+{x - 100}+{y - 70}')
    root.title('交易系统登录')
    # root.iconbitmap('logo.ico')
    root.resizable(False, False)  # 不允许改变窗口大小

    fr1 = Frame(root)
    fr1.pack()
    img1 = get_img(filename='zf01.jpg', width=400, height=150)  # 自己找一张图片
    canvas = Canvas(fr1, width=400, height=150, bg='lightblue', highlightthickness=0)
    canvas.create_image(200, 0, image=img1, anchor='n')
    canvas.create_text(200, 48, text="欢迎使用股票自动交易系统", fill='red', font=('方正粗黑宋简体', 13))
    canvas.pack()

    fr2 = Frame(root)
    fr2.pack(pady=10)

    # 用户名
    Lab_1 = Label(fr2, text='用  户  名:', font=('Arial', 10))
    Lab_1.grid(row=0, column=0, padx=(0, 0), pady=10)  # 0行0列
    var_usr_name = StringVar()
    entry_usr_name = Entry(fr2, textvariable=var_usr_name, font=('Arial', 10))
    entry_usr_name.grid(row=0, column=1, padx=(20, 0), pady=8)  # 0行1列
    entry_usr_name.focus_set()  # 获得焦点

    # 用户密码
    Lab_2 = Label(fr2, text='登录密码:', font=('Arial', 10))
    Lab_2.grid(row=1, column=0, padx=(0, 0), pady=8)  # 1行0列
    var_usr_pwd = StringVar()
    entry_usr_pwd = Entry(fr2, textvariable=var_usr_pwd, font=('Arial', 10), show='*')
    entry_usr_pwd.grid(row=1, column=1, padx=(20, 0), pady=8)  # 1行1列

    # 定义用户登录功能
    def usr_login():
        usr_name = var_usr_name.get()
        usr_pwd = var_usr_pwd.get()
        if usr_name == '' or usr_pwd == '':
            messagebox.showerror('Error', '用户名,密码不能空!
请 重 新 输 入!')
            return
        try:
            with open('usrs_info.pickle', 'rb') as usr_file:
                usrs_info = pickle.load(usr_file)
        except FileNotFoundError:
            with open('usrs_info.pickle', 'wb') as usr_file:
                usrs_info = {'admin': 'admin'}
                pickle.dump(usrs_info, usr_file)
                usr_file.close()  # 必须先关闭

        if usr_name in usrs_info:
            if usr_pwd == usrs_info[usr_name]:
                fr1.destroy()
                fr2.destroy()
                Home(master=root)  # 主窗体模块的界面加载
            else:
                messagebox.showerror("错误", "密 码 错 误!
请重新输入")
        else:  # 如果发现用户名不存在
            is_sign_up = messagebox.askyesno('欢迎光临! ', '您还没有注册. 马上注册?')
            # 提示需不需要注册新用户
            if is_sign_up:
                usr_sign_up()

    # 定义用户注册功能
    def usr_sign_up():
        infodisplay()

        def sign_to():
            np = new_pwd.get()
            npf = new_pwd_confirm.get()
            nn = new_name.get()

            if np == '' or nn == '':
                messagebox.showerror('Error', '用户名,密码不能空!
   请 重 新 输 入 !')
                return

            # 这里是打开我们记录数据的文件,将注册信息读出
            try:
                with open('usrs_info.pickle', 'rb') as usr_file:
                    exist_usr_info = pickle.load(usr_file)
            except FileNotFoundError:
                with open('usrs_info.pickle', 'wb') as usr_file:
                    usrs_info = {'admin': 'admin'}
                    pickle.dump(usrs_info, usr_file)
                    exist_usr_info = 'admin'
                    usr_file.close()
            if np != npf:
                messagebox.showerror('Error', '两次密码必须相同!')
            elif nn in exist_usr_info:
                messagebox.showerror('Error', '用户名已注册!')
            else:
                exist_usr_info[nn] = np
                with open('usrs_info.pickle', 'wb') as usr_file:
                    pickle.dump(exist_usr_info, usr_file)
                messagebox.showinfo('Welcome', '您已注册成功!')
                # window_sign_up.destroy()
                close_handler()

        global window_sign_up
        window_sign_up = Toplevel()
        window_sign_up.transient(root)
        window_sign_up.attributes('-topmost', 1)
        window_sign_up.protocol('WM_DELETE_WINDOW', close_handler)
        window_sign_up.geometry(f'300x200+{x + 320}+{y + 30}')
        window_sign_up.title('用户注册')
        window_sign_up.attributes("-toolwindow", 1)

        new_name = StringVar()  # 将输入的注册名赋值给变量
        Label(window_sign_up, text='用  户  名:').place(x=15, y=20)
        entry_new_name = Entry(window_sign_up, textvariable=new_name)
        entry_new_name.place(x=100, y=20)
        entry_new_name.focus_set()  # 获得焦点

        new_pwd = StringVar()
        Label(window_sign_up, text='密       码:').place(x=15, y=60)
        usr_pwd = Entry(window_sign_up, textvariable=new_pwd, show='*')
        usr_pwd.place(x=100, y=60)

        new_pwd_confirm = StringVar()
        Label(window_sign_up, text='密码确认:').place(x=15, y=100)
        usr_pwd_confirm = Entry(window_sign_up, textvariable=new_pwd_confirm, show='*')
        usr_pwd_confirm.place(x=100, y=100)

        btn_sign_up1 = Button(window_sign_up, text='注册', command=sign_to)
        btn_sign_up1.place(x=180, y=150)

    btn_login = Button(fr2, text='登录', command=usr_login)
    btn_login.grid(row=2, column=0, padx=(40, 0), pady=8)  # 2行0列

    btn_sign_up = Button(fr2, text='注册', command=usr_sign_up)
    btn_sign_up.grid(row=2, column=1, padx=(20, 0), pady=8)  # 2行1列
    root.mainloop()


def get_img(filename, width, height):
    im = Image.open(filename).resize((width, height))
    im = ImageTk.PhotoImage(im)
    return im

def close_handler():
    root.attributes('-disabled', 0)
    window_sign_up.destroy()

def infodisplay():
    root.attributes('-disabled', 1)


class Home(Frame):
    """主窗口"""

    def __init__(self, master=None):
        super().__init__(master)  # 调用父类的初始化方法
        self.root = master
        self.root.title('股票自动交易系统')
        x = int(self.root.winfo_screenwidth() / 2 - self.root.winfo_reqwidth() / 2)
        y = int(self.root.winfo_screenheight() / 2 - self.root.winfo_reqheight() / 2)
        self.root.geometry(f'1080x600+{x - 400}+{y - 220}')
        self.root.resizable(False, False)  # 不允许改变窗口大小
        self.createWidget()

    def createWidget(self):
        """创建组件"""
        stus_str_var = StringVar()
        stus_str_var.set("开 始 您 的 创 作 吧!")
        stus_label = Label(self.root, textvariable=stus_str_var, fg='red', font=('Arial', 25),
                           anchor='center')

        stus_label.pack(pady=100)


if __name__ == '__main__':
    root = None
    window_sign_up = None

    main()


登陆界面源码

展开阅读全文

页面更新:2024-05-01

标签:方正   不允许   交易系统   源码   用户名   定义   大小   窗口   密码   功能   股票

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top