引自免费微信小程序:皆我百晓生
当然,我很乐意帮助你解决这个问题。以下是一个使用tkinter创建带有按钮、弹窗以及输入验证功能的简单示例代码:
import tkinter as tk
from tkinter import messagebox
# 创建主窗口
window = tk.Tk()
window.geometry("400x400")
window.title("登录界面")
# 定义居中显示函数
def center_window(root):
window_width = root.winfo_reqwidth()
window_height = root.winfo_reqheight()
position_right = int(window.winfo_screenwidth() / 2 - window_width / 2)
position_down = int(window.winfo_screenheight() / 2 - window_height / 2)
root.geometry("+{}+{}".format(position_right, position_down))
center_window(window)
# 创建一个居中的按钮
def popup_login():
top = tk.Toplevel(window)
top.title("登录")
# 设置弹窗大小和位置居中
top.geometry("300x150")
center_window(top)
# 创建账号和密码输入框
account_label = tk.Label(top, text="账号:", font=("Arial", 12))
account_entry = tk.Entry(top, show="*", width=20)
password_label = tk.Label(top, text="密码:", font=("Arial", 12))
password_entry = tk.Entry(top, show="*", width=20)
# 按钮布局及定位
account_label.grid(row=0, column=0, padx=10, pady=10)
account_entry.grid(row=0, column=1, padx=10, pady=10)
password_label.grid(row=1, column=0, padx=10, pady=10)
password_entry.grid(row=1, column=1, padx=10, pady=10)
# 创建登录按钮,并设置点击事件
login_button = tk.Button(top, text="登录", command=lambda: check_credentials(account_entry, password_entry))
login_button.grid(row=2, columnspan=2, padx=10, pady=10)
# 登录验证函数
def check_credentials(account_entry, password_entry):
account = account_entry.get()
password = password_entry.get()
# 这里仅做简单的字符串匹配模拟验证过程,实际应用中应连接数据库进行验证
correct_account = "正确账号"
correct_password = "正确密码"
if account == correct_account and password == correct_password:
messagebox.showinfo("提示", "登录成功!")
new_window = tk.Toplevel(window)
new_window.title("新窗口")
# 新窗口内容...
else:
messagebox.showerror("错误", "账号或密码错误,请重新输入。")
# 在主窗口上创建并定位登录按钮
login_button_main = tk.Button(window, text="点击登录", command=popup_login)
login_button_main.pack(pady=50, padx=50)
# 启动主窗口循环
window.mainloop()
这段代码首先定义了一个主窗口,并在其中添加了一个按钮,当点击该按钮时会弹出一个新的登录窗口。登录窗口有两个文本框用于输入账号和密码,还有一个登录按钮。点击登录按钮后,将调用check_credentials
函数进行验证,如果输入的账号和密码与预设的“正确账号”和“正确密码”相匹配,则显示一个消息框告知用户登录成功,并打开一个新的窗口(这里仅做了标题设置,实际可以填充其他内容)。如果不匹配,则显示错误消息。
注意,这里的账号和密码校验是基于硬编码的示例值,实际项目中需要替换为从数据库查询或其他验证逻辑。