文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-28 16:26

关注

引言

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

你可以用customtkinter做什么的例子

安装

要开始使用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

结果

(1) 带注册+登录的高级用例

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

(2) 完整代码

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

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) 用户字典:

(2) 注册和登录函数:

(3) 切换屏幕的函数:

(4) 初始配置:

(5) 框架和组件:

(6) 启动主循环:

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

结果

Python中的登录系统

Python中的注册系统

Python桌面应用中的密码验证

结论

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

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

来源:小白玩转Python内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯