Python Tkinter实现登录页面:布局、控件与居中技巧
本文详解使用Python3.7和内置Tkinter库构建登录页面的关键技术。涵盖窗口标题与ICO图标设置、各类控件(输入框、按钮、复选框)的使用、绝对定位布局、Lambda事件传参及背景色配置。重点解析如何实现窗口屏幕居中及错误信息一次性提示,确保用户体验友好。
Python Tkinter登录界面开发核心技术与实现细节
本项目核心技术基于Python3.7版本。
图形用户界面(GUI)开发选用Tkinter,该模块已内置于Python环境中,无需额外安装。
网络上关于Python Tkinter窗口视窗的教程众多,但多数仅为基础介绍,难以满足实际项目需求。为服务于具体项目,本文结合实例进行说明,先展示最终效果截图,其中涉及的知识点较为丰富。

在Windows系统下运行可能存在细微瑕疵,但在macOS系统中表现良好。以下罗列所用技术细节,随后分享完整代码。
首先设置窗体标题及图标。图标格式需为ICO,通常需将PNG图片转换为此格式,可使用指定在线转换工具完成。
其次使用Tkinter的输入控件、标签控件、按钮控件及复选框控件。需注意,密码输入框需设置show='*'以隐藏明文显示。
布局方面采用Tkinter的place绝对定位方式,因窗口大小固定不可调整,故使用绝对定位确保元素位置准确。
按钮事件处理中,若需传递参数,必须使用lambda表达式。
背景色设定为白色,因此所有Label控件的背景色也统一设置为白色以保持视觉一致。
最后实现屏幕居中功能,具体算法可参考网络资源自行查阅。
具体实现代码如下:
import tkinter as tk
import tkinter.font as tkFont
from tkinter import messagebox
class LoginView():
window = tk.Tk()
def __init__(self):
self.initializeUI()
def initializeUI(self):
self.window.iconbitmap("./resource/icon/hunter.ico")
self.window.title('猎人村自媒体小助手平台登录')
background_color="white"
self.window.configure(background=background_color)
#self.window.overrideredirect(True)
photo = tk.PhotoImage(file="./resource/images/hunter.png")
label = tk.Label(image=photo,width=32, bg=background_color)
label.image = photo
label.place(x=60,y=40)
ft = tkFont.Font(family='Fixdsys', size=16, weight=tkFont.BOLD)
tk.Label(self.window, text="猎人村自媒体小助手",font=ft, bg=background_color).place(x=100,y=44)
photo = tk.PhotoImage(file="./resource/images/splitline.png")
label = tk.Label(image=photo)
label.image =photo
label.place(x=0,y=90)
# 标签 用户名密码 #F3F3F4
entryBackGroundColor="#F3F3F4"
userNameFont = tkFont.Font(family='Fixdsys', size=10)
tk.Label(self.window, text='请输入用户名:',font=userNameFont, bg=background_color).place(x=20, y=150)
userName = tk.StringVar()
tk.Entry(self.window, highlightthickness=1,bg=entryBackGroundColor,textvariable =userName).place(x=20, y=180,width=320, height=30)
passWordFont = tkFont.Font(family='Fixdsys', size=10)
passWord = tk.StringVar() #
tk.Label(self.window, text='请输入密码:',font=passWordFont, bg=background_color).place(x=20, y=220)
tk.Entry(self.window, highlightthickness=1, bg=entryBackGroundColor,textvariable =passWord, show='*').place(x=20, y=250,width=320, height=30)
remeberMeFont=tkFont.Font(family='Fixdsys', size=12)
tk.Checkbutton(self.window, text="记住我",fg="#0081FF",variable="0",font=remeberMeFont, bg=background_color).place(x=20, y=300)
tk.Button(self.window, text='立即登录', font=('Fixdsys', 14, 'bold'), width=29,fg='white',bg="#0081FF",command=lambda :self.login(userName,passWord)).place(x=20, y=330)
regester_info=tkFont.Font(family='Fixdsys', size=10)
tk.Label(self.window, text='还没有账号?:', font=regester_info, bg=background_color).place(x=102,y=375)
tk.Label(self.window, text='立即注册', font=regester_info, bg=background_color,fg="#FFA500").place(x=185,y=375)
w = 370
h = 480
sw = self.window.winfo_screenwidth()
# 得到屏幕宽度
sh = self.window.winfo_screenheight()
# 得到屏幕高度
# 窗口宽高为100
x = (sw - w) / 2
y = (sh - h) / 2
self.window.geometry("%dx%d+%d+%d" % (w, h, x, y))
self.window.mainloop()
pass
def login(self,userName,passWord):
errMessage=""
if len(userName.get())==0:
errMessage=errMessage+"用户名不能为空!\r"
if len(passWord.get())==0:
errMessage=errMessage+"密码不能为空!"
if errMessage!="":
messagebox.showinfo('提示', errMessage)
print(passWord.get())
pass

需特别强调的是,提示信息应一次性全部展示,而非逐个输入验证后分别提示。虽然实现简单,但对于输入项较多的场景,这种一次性反馈机制能显著提升用户友好度。
总结
至此,关于基于Python的自媒体小助手登录页面实现介绍完毕。如需了解更多Python自媒体小助手相关内容,请搜索本站历史文章或继续阅读后续文章,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













