Python Tkinter实现登录页面:布局、控件与居中技巧

江屿
江屿
发布时间:2026-10-14 | 4人浏览过
原创

本文详解使用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自媒体小助手相关内容,请搜索本站历史文章或继续阅读后续文章,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表