• 意想不到的Python ttkbootstrap 制作账户注册信息界面


    嗨害大家好,我是小熊猫🖤

    今天给大家来整一个旧活~

    在这里插入图片描述

    前言

    ttkbootstrap 是一个基于 tkinter 的界面美化库,使用这个工具可以开发出类似前端 bootstrap 风格的tkinter 桌面程序。


    ttkbootstrap不仅有丰富的案例,同时还有完善的官方文档,可惜是英文的。不过对于程序员来说,只要用好翻译软件与提供的案例代码,一样可以轻松上手,那么接下来我们就介绍一下这个工具的使用。


    准备工作

    首先肯定是需要安装一下== ttkbootstrap==

    版本要新,最好不要用镜像源安装
    pip install ttkbootstrap

    可以先来个小案例试试手

    有什么python相关报错解答自己不会的、或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者文末私号问我

    import ttkbootstrap as ttk
    from ttkbootstrap.constants import *
    
    # root = tk.Tk()  # 使用 tkinter 创建窗口对象
    root = ttk.Window()  # 使用 ttkbootstrap 创建窗口对象
    
    root.geometry('300x150')  python学习交流群:660193417###
    
    b1 = ttk.Button(root, text="按钮 1", bootstyle=SUCCESS)  # 使用 ttkbootstrap 的组件
    b1.pack(side=LEFT, padx=5, pady=10)
    
    b2 = ttk.Button(root, text="按钮 2", bootstyle=(INFO, OUTLINE))   # OUTLINE 是指定边框线
    b2.pack(side=LEFT, padx=5, pady=10)
    
    root.mainloop()
    

    请添加图片描述

    开始我们今天的案例教学

    完整代码,复制运行即可(明示👍👍👍)

    import ttkbootstrap as tk
    
    root = tk.Window(themename='litera')
    root.geometry('350x500+500+500')
    root.title('萌新-注册页面')python学习交流群:660193417###
    root.wm_attributes('-topmost', 1)
    
    username_str_var = tk.StringVar()
    password_str_var = tk.StringVar()
    
    # 0 女 1 男 -1 保密
    gender_str_var = tk.IntVar()
    # 兴趣爱好
    hobby_list = [
        [tk.IntVar(), '吃'],
        [tk.IntVar(), '喝'],
        [tk.IntVar(), '玩'],
        [tk.IntVar(), '乐'],
    ]
    
    # 账户信息
    tk.Label(root, width=10).grid()
    tk.Label(root, text='用户名:').grid(row=1, column=1, sticky=tk.W, pady=10)
    tk.Entry(root, textvariable=username_str_var).grid(row=1, column=2, sticky=tk.W)
    tk.Label(root, text='密  码:').grid(row=2, column=1, sticky=tk.W, pady=10)
    tk.Entry(root, textvariable=password_str_var).grid(row=2, column=2, sticky=tk.W)
    
    # 性别 单选框
    tk.Label(root, text='性别:').grid(row=4, column=1, sticky=tk.W, pady=10)
    radio_frame = tk.Frame()
    radio_frame.grid(row=4, column=2, sticky=tk.W)
    tk.Radiobutton(radio_frame, text='男', variable=gender_str_var, value=1).pack(side=tk.LEFT, padx=5)
    tk.Radiobutton(radio_frame, text='女', variable=gender_str_var, value=0).pack(side=tk.LEFT, padx=5)
    tk.Radiobutton(radio_frame, text='保密', variable=gender_str_var, value=-1).pack(side=tk.LEFT, padx=5)
    
    # 兴趣爱好
    tk.Label(root, text='兴趣:').grid(row=6, column=1, sticky=tk.W, pady=10)
    check_frame = tk.Frame()
    check_frame.grid(row=6, column=2, sticky=tk.W)
    tk.Checkbutton(check_frame, text=hobby_list[0][1], variable=hobby_list[0][0]).pack(side=tk.LEFT, padx=5)
    tk.Checkbutton(check_frame, text=hobby_list[1][1], variable=hobby_list[1][0], bootstyle="square-toggle").pack(
        side=tk.LEFT, padx=5)
    tk.Checkbutton(check_frame, text=hobby_list[2][1], variable=hobby_list[2][0], bootstyle="round-toggle").pack(
        side=tk.LEFT, padx=5)
    tk.Checkbutton(check_frame, text=hobby_list[3][1], variable=hobby_list[3][0]).pack(side=tk.LEFT, padx=5)
    
    # 生日
    tk.Label(root, text='生日:').grid(row=7, column=1, sticky=tk.W, pady=10)
    data_entry = tk.DateEntry()
    data_entry.grid(row=7, column=2, sticky=tk.W, pady=10)
    print(data_entry.entry.get())
    
    # print(birth_day.get())
    
    tk.Label(root, text="").grid(row=9, column=2, sticky=tk.W)
    button = tk.Button(root, text='提交', width=20)
    button.grid(row=10, column=2, sticky=tk.W)
    
    
    def get_info():
        data = {
            '用户名': username_str_var.get(),
            '密码': password_str_var.get(),
            '性别': gender_str_var.get(),
            '兴趣': [h for v, h in hobby_list if v.get()],
            '生日': data_entry.entry.get()
        }
        print(data)
        with open('1.txt', mode='a') as f:
            f.write('\n')
            f.write(str(data))
    
    
    
    button.config(command=get_info)
    root.mainloop()
    
    
    
    折叠

    请添加图片描述
    1、做个界面

    root = tk.Window(themename='litera')
    root.geometry('350x500+500+500')
    root.title('萌新-注册页面')
    root.wm_attributes('-topmost', 1)
    root.mainloop()
    

    请添加图片描述
    2、用户注册框

    tk.Label(root, width=10).grid()
    tk.Label(root, text='用户名:').grid(row=1, column=1, sticky=tk.W, pady=10)
    tk.Entry(root, textvariable=username_str_var).grid(row=1, column=2, sticky=tk.W)
    tk.Label(root, text='密  码:').grid(row=2, column=1, sticky=tk.W, pady=10)
    tk.Entry(root, textvariable=password_str_var).grid(row=2, column=2, sticky=tk.W) python学习交流群:660193417###
    

    请添加图片描述
    3、性别单选框

    # 01 男 -1 保密
    gender_str_var = tk.IntVar()
    
    tk.Label(root, text='性别:').grid(row=4, column=1, sticky=tk.W, pady=10)
    radio_frame = tk.Frame()
    radio_frame.grid(row=4, column=2, sticky=tk.W)
    tk.Radiobutton(radio_frame, text='男', variable=gender_str_var, value=1).pack(side=tk.LEFT, padx=5)
    tk.Radiobutton(radio_frame, text='女', variable=gender_str_var, value=0).pack(side=tk.LEFT, padx=5)
    tk.Radiobutton(radio_frame, text='保密', variable=gender_str_var, value=-1).pack(side=tk.LEFT, padx=5)
    
    

    请添加图片描述
    4、兴趣爱好

    hobby_list = [
        [tk.IntVar(), '吃'],
        [tk.IntVar(), '喝'],
        [tk.IntVar(), '玩'],
        [tk.IntVar(), '乐'],
    ]
    
    tk.Label(root, text='兴趣:').grid(row=6, column=1, sticky=tk.W, pady=10)
    check_frame = tk.Frame()
    check_frame.grid(row=6, column=2, sticky=tk.W)
    tk.Checkbutton(check_frame, text=hobby_list[0][1], variable=hobby_list[0][0]).pack(side=tk.LEFT, padx=5)
    tk.Checkbutton(check_frame, text=hobby_list[1][1], variable=hobby_list[1][0], bootstyle="square-toggle").pack(
        side=tk.LEFT, padx=5)
    tk.Checkbutton(check_frame, text=hobby_list[2][1], variable=hobby_list[2][0], bootstyle="round-toggle").pack(
        side=tk.LEFT, padx=5)
    tk.Checkbutton(check_frame, text=hobby_list[3][1], variable=hobby_list[3][0]).pack(side=tk.LEFT, padx=5)
    

    请添加图片描述
    5、生日

    tk.Label(root, text='生日:').grid(row=7, column=1, sticky=tk.W, pady=10)
    data_entry = tk.DateEntry()
    data_entry.grid(row=7, column=2, sticky=tk.W, pady=10)
    print(data_entry.entry.get())
    

    请添加图片描述
    6、提交信息按钮

    tk.Label(root, text="").grid(row=9, column=2, sticky=tk.W)
    button = tk.Button(root, text='提交', width=20)
    button.grid(row=10, column=2, sticky=tk.W)
    

    请添加图片描述
    7、保存数据

    def get_info():
        data = {
            '用户名': username_str_var.get(),
            '密码': password_str_var.get(),
            '性别': gender_str_var.get(),
            '兴趣': [h for v, h in hobby_list if v.get()],
            '生日': data_entry.entry.get()
        }
        print(data)
        with open('1.txt', mode='a') as f:
            f.write('\n')
            f.write(str(data))
    button.config(command=get_info)
    python学习交流群:660193417###
    

    请添加图片描述
    请添加图片描述

    有什么python相关报错解答自己不会的、或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者文末私号问我

    就是这些啦,希望这篇文章对你有所帮助鸭~

    我是小熊猫,咱下篇文章见(✿◡‿◡)

    在这里插入图片描述

  • 相关阅读:
    基于注解的声明式事务
    MR混合现实在石油化工课堂教学中的应用演示
    使用华为eNSP组网试验⑹-组建基于BGP的网络
    React使用哲学
    Spark Join类型和适用的场景
    基础算法---位运算
    递归解析Json,实现生成可视化Tree+快速获取JsonPath
    【算法 | 模拟No.2】leetcode495. 提莫攻击
    如何在Kubernetes中实现微服务应用监控?
    java计算机毕业设计医院门诊挂号系统源程序+mysql+系统+lw文档+远程调试
  • 原文地址:https://www.cnblogs.com/xiaoxiongmao123/p/16471788.html