Python、tkinter与登录界面

本文介绍了如何使用Python的Tkinter库创建一个基本的图形用户界面,包括控件的概念、层级结构、配置选项、几何布局管理和事件循环。通过实例演示了如何制作一个登录界面,包括Label、Button和Entry组件的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出于总结归纳所学习的知识、完成老师布置作业的需要,在这介绍一下如何使用python的图形界面工具包--tkinter完成一个登录界面,和相关知识。

首先,介绍一下tkinter的一些重要概念:

1、控件

       Tkinter 用户界面是由一个个控件组成的。每个控件都由相应的 Python 对象表示,由 ttk.Frame(框架), ttk.Label(标签)以及ttk.Button(按钮)这样的类来实例化。

2、控件层级结构

   控件按层级结构来组织。标签和按钮包含在框架中,框架又包含在根窗口中。 当创建每个子控件时,它的父控件会作为控件构造器的第一个参数被传入。 

3、配置选项

   控件具有配置选项,配置选项会改变控件的外观和行为,例如要在标签

或按钮中显示的文本。不同的控件类会具有不同的选项集。

4、几何布局管理

       小部件在创建时不会自动添加到用户界面。tkinter提供了pack、grid和place这三个几何管理器控制这些小部件在用户界面的位置。

5、事件循环

   只有主动运行一个事件循环,Tkinter 才会对用户的输入做出反应,改变你的程序,以及刷新显示。如果你的程序没有运行事件循环,你的用户界面不会更新。

接下来我们看一波代码:

 from tkinter import *

from tkinter import ttk

root = Tk()

root.geometry("200x200")

frm = ttk.Frame(root,height=100,width=100)

frm.grid()

ttk.Label(frm, text="你好!").grid(column=0, row=0)

ttk.Button(frm, text="退出", command=root.destroy).grid(column=1, row=0)

root.mainloop()

    

在导入语句之后,第三行语句创建了一个 Tk 类的实例,它会初始化 Tk 并创建与其关联的 Tcl 解释器。 它还会创建一个顶层窗口,名为 root 窗口,它将被作为应用程序的主窗口。

第四行代码配置了root窗口的大小。

第五行行创建了一个框架控件,在本示例中它会包含我们即将创建的一个标签和一个按钮。 框架被嵌在 root 窗口内部。

第七行行创建了一个包含静态文本字符串的标签控件。标签即Label组件用于在窗口中显示文本或位图;而grid()方法被用来指明标签在包含它的框架控件中的相对布局(定位),作用类似于 HTML 中的表格。

接下来创建了一个按钮控件,并被放置到标签的右侧。按钮即Button是一个标准的Tkinter部件,用于实现各种按钮。 传参中的command=root.destroy是设置该按钮被按下时,它将调用 root 窗口的destroy()方法。

最后,mainloop() 方法将所有控件显示出来,并响应用户输入直到程序终结。

运行结果如图:

  这样,一个没什么用的图形界面就搞出来了。

然后,我们看看如何写出一个登录界面。首先,教科书上的代码:

from tkinter import *

from tkinter import ttk

root = Tk()

root.title("登录")

root['width']=200

root['height']=80

Label(root,text='用户名',width=6).place(x=1,y=1)

Entry(root,width=20).place(x=45,y=1)

Label(root,text='密码',width=6).place(x=1,y=20)

Entry(root,width=20,show='*').place(x=45,y=20)

Button(root,text='登录',width=8).place(x=40,y=40)

Button(root,text='取消',width=8).place(x=110,y=40)

root.mainloop()

代码中的Entry是单行文本框,主要用于输入单行内容和显示文本,可以方便的传递用户参数。当然这个代码中的单行文本框是传不了啥参数的。代码中Entry用到了两个参数:width、show。Width不必多说,设置组件的宽度;而show这个属性主要用于密码输入,如代码中设置为“*”,则输入文本框中内容就显示为“*”。

其它常用的属性如下:

fg:设置字体前景颜色

bg:设置背景颜色

State:设置组件状态,默认为norma,可设置为:disabled禁用组件,readonly只读。

insertbackground和selectforeground:选中文本的背景色与前景色。

Insertbackground:插入光标的颜色,默认为黑色。

代码运行结果如图:

如果你觉得place这个布局管理器让你有点摸不着头脑,你可以跟我一样用简单粗暴的pack。

root = Tk()

root.title("登录")

root['width']=200

root['height']=80

Label(root,text='用户名',width=6).pack()

Entry(root,width=20).pack()

Label(root,text='密码',width=6).pack()

Entry(root,width=20,show='*').pack()

Button(root,text='登录',width=8).pack()

Button(root,text='取消',width=8).pack()

root.mainloop()

运行结果:

不过效果确实有点一言难尽,这提醒我们:懒有懒的代价。

当然,pack方法还是有几个参数选项可供你调整:

side: 决定组件停靠的方向。

 选项:left, right, top, bottom

la1.pack( side=’top’) # 向上停靠 默认

la1.pack( side=’bottom) # 向下停靠

la1.pack( side=’left’) # 向左停靠

la1.pack( side=’right’) # 向右停靠

fill: 决定组件是否填充,以及填充的方向

 选项:x, y, both, none

fill=”none” # 不填充 默认

fill=”x” # 横向填充

fill=”y” # 纵向填充

fill=”both” # 横向纵向都填充

padx/pady: 组件外,组件跟邻近组件或窗体边界的距离(外边距)

默认值:0

ipadx/ipady: 组件内,组件文本跟组件边界之间的距离(内边距)

 默认值:0

anchor: 决定组件停靠的位置

选项:n,nw,ne,s,nw,ne,center 默认值:center (居中显示)

expand: 决定组件的“势力范围”是否扩大到“扩展范围”

 选项:True, False

 默认值:False (标签只在自己的势力范围内活动)

我相信掌握以上内容就能弄出一个朴素的登录界面,这篇文章虽然没什么用但我相信还是有点用的。

参考书籍及资料:

  Python程序设计应用教程 中国铁道出版社

  Python官网:https://docs.python.org/zh-cn/3/library/tkinter.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值