如何用 Python 创建现代图形用户界面

点击下方卡片,关注“小白玩转Python”公众号

67c886c227308e5fbfc3bf24e9c58d01.png

在Python中创建图形用户界面(GUI)可以将你的脚本转变为交互式应用程序。在本文中,我们将探讨如何使用customtkinter库构建外观现代的GUI,讨论用例,提供可能的应用程序示例,突出优势,并包括一个示例代码片段。

引言

你是否曾想过给你的Python脚本添加一个时尚现代的图形界面?使用customtkinter,你可以轻松创建吸引人的GUI。本指南将带你了解安装过程,解释customtkinter的基础知识,并提供一个实践示例来帮助你开始。

你可以用customtkinter做什么的例子

  1. 登录系统:创建安全且用户友好的登录界面。

  2. 仪表板应用程序:设计具有实时数据可视化的数据仪表板。

  3. 表单应用程序:构建用于数据输入和提交的交互式表单。

  4. 任务管理工具:开发用于跟踪任务和生产力的应用程序。

  5. 教育工具:创建用于交互式教授编程或其他主题的应用程序。

安装

要开始使用customtkinter,请按照以下步骤安装库:

  1. 打开你的终端或命令提示符。

  2. 运行以下命令,使用pip安装customtkinter:

pip install customtkinter

使用customtkinter的登录系统示例

import customtkinter as ctk


# Initial configuration
ctk.set_appearance_mode("dark")  # Set appearance mode: system, light, dark
ctk.set_default_color_theme("dark-blue")  # Set color theme: blue, dark-blue, green


# Create the main window
root = ctk.CTk()
root.geometry("500x350")  # Set the window size
root.title("Login System")  # Set the window title


# Example login function
def login():
    print("Login Successful")  # Placeholder function to simulate login


# Create the main frame
frame = ctk.CTkFrame(master=root)
frame.pack(pady=20, padx=60, fill="both", expand=True)  # Add frame with padding and expansion


# Create components
label = ctk.CTkLabel(master=frame, text="Login System", font=("Roboto", 24))
label.pack(pady=12, padx=10)  # Add a label with text and font settings


entry_username = ctk.CTkEntry(master=frame, placeholder_text="Username")
entry_username.pack(pady=12, padx=10)  # Add a username entry field with placeholder text


entry_password = ctk.CTkEntry(master=frame, placeholder_text="Password", show="*")
entry_password.pack(pady=12, padx=10)  # Add a password entry field with placeholder text and masked input


button = ctk.CTkButton(master=frame, text="Login", command=login)
button.pack(pady=12, padx=10)  # Add a login button and link it to the login function


checkbox = ctk.CTkCheckBox(master=frame, text="Remember Me")
checkbox.pack(pady=12, padx=10)  # Add a "Remember Me" checkbox


# Start the main loop
root.mainloop()  # Run the GUI application

结果

64e177f70406c07c10242a23a5c9bb9f.png

带注册+登录的高级用例

为了在应用程序中创建一个允许用户注册并验证他们是否已注册的预注册屏幕,我们可以扩展现有代码。以下是包括登录屏幕之前的注册屏幕的更新代码。

完整代码

这段代码实现了两个窗口:一个用于注册,一个用于登录。为了简单起见,注册数据存储在内存中的字典里。在现实世界的场景中,数据应该存储在安全的数据库中。

import customtkinter as ctk
from tkinter import messagebox


# Dictionary to store registered users (username: password)
registered_users = {}


# Registration function
def register():
    username = entry_register_username.get()
    password = entry_register_password.get()


    if username in registered_users:
        messagebox.showerror("Error", "Username is already registered.")
    else:
        registered_users[username] = password
        messagebox.showinfo("Success", "User registered successfully.")
        register_frame.pack_forget()
        show_login()


# Login function
def login():
    username = entry_username.get()
    password = entry_password.get()


    if username in registered_users and registered_users[username] == password:
        messagebox.showinfo("Success", "Login successful.")
    else:
        messagebox.showerror("Error", "Incorrect username or password.")


# Function to show the registration screen
def show_register():
    login_frame.pack_forget()
    register_frame.pack(pady=20, padx=60, fill="both", expand=True)


# Function to show the login screen
def show_login():
    register_frame.pack_forget()
    login_frame.pack(pady=20, padx=60, fill="both", expand=True)


# Initial configuration
ctk.set_appearance_mode("dark")  # Mode: system, light, dark
ctk.set_default_color_theme("dark-blue")  # Theme: blue, dark-blue, green


# Create the main window
root = ctk.CTk()
root.geometry("500x400")
root.title("Registration and Login System")


# Create the login frame
login_frame = ctk.CTkFrame(master=root)
label_login = ctk.CTkLabel(master=login_frame, text="Login System", font=("Roboto", 24))
label_login.pack(pady=12, padx=10)
entry_username = ctk.CTkEntry(master=login_frame, placeholder_text="Username")
entry_username.pack(pady=12, padx=10)
entry_password = ctk.CTkEntry(master=login_frame, placeholder_text="Password", show="*")
entry_password.pack(pady=12, padx=10)
button_login = ctk.CTkButton(master=login_frame, text="Login", command=login)
button_login.pack(pady=12, padx=10)
button_show_register = ctk.CTkButton(master=login_frame, text="Register", command=show_register)
button_show_register.pack(pady=12, padx=10)
checkbox_login = ctk.CTkCheckBox(master=login_frame, text="Remember Me")
checkbox_login.pack(pady=12, padx=10)


# Create the register frame
register_frame = ctk.CTkFrame(master=root)
label_register = ctk.CTkLabel(master=register_frame, text="Register System", font=("Roboto", 24))
label_register.pack(pady=12, padx=10)
entry_register_username = ctk.CTkEntry(master=register_frame, placeholder_text="Username")
entry_register_username.pack(pady=12, padx=10)
entry_register_password = ctk.CTkEntry(master=register_frame, placeholder_text="Password", show="*")
entry_register_password.pack(pady=12, padx=10)
button_register = ctk.CTkButton(master=register_frame, text="Register", command=register)
button_register.pack(pady=12, padx=10)
button_show_login = ctk.CTkButton(master=register_frame, text="Login", command=show_login)
button_show_login.pack(pady=12, padx=10)


# Show the login frame at the start
login_frame.pack(pady=20, padx=60, fill="both", expand=True)


# Start the main loop
root.mainloop()

代码解释

1. 用户字典:

  • registered_users:存储用户名和密码。在现实世界的应用中,这应该是一个安全的数据库。

2. 注册和登录函数:

  • register():如果用户名尚未被占用,则注册新用户。

  • login():检查用户的凭据是否与字典中的匹配,并显示成功或错误消息。

3. 切换屏幕的函数:

  • show_register():隐藏登录框架并显示注册框架。

  • show_login():隐藏注册框架并显示登录框架。

4. 初始配置:

  • ctk.set_appearance_mode("dark") 和 ctk.set_default_color_theme("dark-blue"):设置应用程序的外观模式和颜色主题。

5. 框架和组件:

  • login_frame 和 register_frame:用于登录和注册屏幕的框架。

  • 每个框架内的组件(标签、输入框、按钮、复选框)都使用pack()进行配置和打包。

6. 启动主循环:

  • root.mainloop():启动主事件循环以保持应用程序运行。

这段代码创建了一个具有两个屏幕的应用程序,允许用户注册,然后使用注册的凭据登录。

结果

72a0526adf6e4495f27a8f69d6282678.png

Python中的登录系统

4383268e09d0f98c038db73ccc4a4d46.png

Python中的注册系统

0abe835d7c3a0020f02d4481abe8c616.png

Python桌面应用中的密码验证

结论

使用customtkinter库简化了在Python中创建现代图形用户界面的过程。这个强大的工具允许你以最小的努力构建时尚、用户友好的应用程序。通过遵循本指南中概述的步骤,你可以创建注册和登录屏幕,提供无缝的用户体验。

示例代码展示了如何设置初始配置,创建框架和组件,以及处理用户交互,如注册和登录。这些基本构建块可以扩展,以开发更复杂的应用程序,以满足你的特定需求。

·  END  ·

🌟 想要变身计算机视觉小能手?快来「小白玩转Python」公众号!

回复Python视觉实战项目,解锁31个超有趣的视觉项目大礼包!🎁

827df90ee33f93f20f66a9af677fa727.png

本文仅供学习交流使用,如有侵权请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值