使用tkinter创建登录界面

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 使用tkinter创建登录界面

tkinter简介

tkinter是Python的标准GUI(图形用户界面)库,内置在Python自带的模块中,提供了跨平台的GUI支持。使用tkinter可以方便地构建GUI应用程序,如窗口、按钮、菜单、文字、输入框等界面元素。tkinter的优点有:

  • 跨平台支持,可以运行在Windows、Mac和Linux等系统
  • 语法简单易学,可以方便构建基本GUI
  • 可以方便与Python代码逻辑相结合 缺点有界面不够优美等。但tkinter提供了GUI应用开发的基础,具有很高的实用价值。

tkinter基础组件和布局管理

tkinter通过各种Widget(窗口组件)来构建完整的GUI应用。常用的组件有:

  • Label:标签,可以显示文本
  • Button:按钮,可以触发函数
  • Entry:输入框,用于输入文本
  • Text:文本框,显示多行文本
  • Frame:框架,用于容纳其他组件
  • Canvas:画布,可以在上面绘制图形
  • Menu:菜单 等等。tkinter提供布局管理器如pack、grid、place来管理各个组件的位置和布局。pack是最简单的布局方式,可以使组件自动填充空间。grid使用网格系统进行布局。place可以精确指定组件的坐标。下面是一个简单的登录界面布局代码:
import tkinter as tk
window = tk.Tk()
window.title('登录界面')  
tk.Label(window, text='欢迎登录').pack() 
frm = tk.Frame(window)
frm.pack()
tk.Label(frm, text='用户名:').grid(row=0, column=0)
tk.Entry(frm).grid(row=0, column=1)
tk.Label(frm, text='密码:').grid(row=1, column=0) 
tk.Entry(frm).grid(row=1, column=1)
btn = tk.Button(frm, text='登录')
btn.grid(row=2, column=1)
window.mainloop()

这里通过组合不同的组件和布局方式,构建一个登录界面的基本框架,包含了文字,输入框和按钮。

登录界面加背景图片

tkinter直接生成的登录界面比较单调,可以在登录界面加上背景图,背景图片放在相对路径。

import tkinter as tk
from PIL import Image,ImageTk
window = tk.Tk()
window.title('登录界面')
window.geometry('600x600') 
title_label = tk.Label(window, text='登录界面设置', fg='blue', font=('SimSun', 10))
title_label.pack() 
#图片位置
img = Image.open("bg2.png")  #图片,用相对路径
img = img.resize((600, 600)) # 调整图片大小
tk_img = ImageTk.PhotoImage(img)
label_img = tk.Label(window, image=tk_img)
label_img.place(x=100, y=100) # 置于顶部居中
label_img.pack()
user_label = tk.Label(window, text='用户名:', font=('SimSun', 12))
user_label.place(x=80, y=230)
user_entry = tk.Entry(window)
user_entry.place(x=180, y=230)
pwd_label = tk.Label(window, text='密码:', font=('SimSun', 12)) 
pwd_label.place(x=80, y=270)
pwd_entry = tk.Entry(window, show='*')
pwd_entry.place(x=180, y=270)  
login_button = tk.Button(window, text='登录', font=('SimSun', 12))  
login_button.place(x=300, y=300)
window.mainloop()


目录
相关文章
|
3月前
|
存储 固态存储 大数据
大数据水平分区(Horizontal Partitioning)
【11月更文挑战第1天】
91 1
|
9月前
|
数据采集 存储
4个步骤:如何使用 SwiftSoup 和爬虫代理获取网站视频
本文介绍了如何使用SwiftSoup库和爬虫代理技术抓取网站视频资源。通过安装SwiftSoup、获取HTML内容、解析HTML以提取视频链接,以及设置爬虫代理来绕过访问限制,可以实现高效、灵活的视频资源获取。示例代码展示了一个完整的过程,包括下载并存储视频文件到设备。结合这两种技术,可以有效应对网站访问挑战,方便地获取互联网视频资源。
205 3
4个步骤:如何使用 SwiftSoup 和爬虫代理获取网站视频
Pandas与openpyxl库的超强结合,再见,Excel!
Pandas与openpyxl库的超强结合,再见,Excel!
Pandas与openpyxl库的超强结合,再见,Excel!
|
API 定位技术 数据安全/隐私保护
autojs之权限
使用场景 申请各种权限, 以及一些坑
1627 0
autojs之权限
|
前端开发 JavaScript
论如何用Vue实现一个弹窗-一个简单的组件实现
最近在使用element-ui框架,用到了Dialog对话框组件,大致实现的效果,跟我之前自己在移动端项目里面弄的一个弹窗组件差不太多。然后就想着把这种弹窗组件的实现方式与大家分享一下,下面本文会带着大家手摸手实现一个弹窗组件。 本文主要内容会涉及到弹窗遮罩的实现,slot插槽的使用方式,props、$emit传参,具体组件代码也传上去了。如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。
2614 0
论如何用Vue实现一个弹窗-一个简单的组件实现
|
4月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
519 1
|
7月前
|
程序员 C++
C++模板元编程入门
【7月更文挑战第9天】C++模板元编程是一项强大而复杂的技术,它允许程序员在编译时进行复杂的计算和操作,从而提高了程序的性能和灵活性。然而,模板元编程的复杂性和抽象性也使其难以掌握和应用。通过本文的介绍,希望能够帮助你初步了解C++模板元编程的基本概念和技术要点,为进一步深入学习和应用打下坚实的基础。在实际开发中,合理运用模板元编程技术,可以极大地提升程序的性能和可维护性。
|
9月前
|
分布式计算 JavaScript Java
非阻塞IO:提高应用程序的效率与性能
非阻塞IO:提高应用程序的效率与性能
Google Earth Engine——1992—至今混合坐标海洋模型、水温和盐度(全球海洋数据集HYCOM)
Google Earth Engine——1992—至今混合坐标海洋模型、水温和盐度(全球海洋数据集HYCOM)
523 0
Google Earth Engine——1992—至今混合坐标海洋模型、水温和盐度(全球海洋数据集HYCOM)
|
IDE 编译器 开发工具
添加DSP库启用arm_math.h
添加DSP库启用arm_math.h
883 0