python自带gui插件tkinter使用小结
1.tkinter简介
Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可以直接使用它,而无须另行安装。
作为一款 Python GUI 工具,Tkinter 拥有良好的跨平台性,支持 Windows、Linux、Mac 平台,它传承了 Python 语法简洁、代码易读的基本特点。
与其他编程语言的 GUI 工具包相比,Tkinter 编码效率高,能够实现快速开发的目的,非常适合初学者学习。Tkinter 使用纯 Python 语言开发,与 C/C++ 开发的 Qt 框架相比,Tkinter 有自身的局限性,比如性能、功能丰富程度等都不及 Qt,因此它只适合开发一些简单的程序,比如计算器的界面
引用自tkinter简介
2.常用组件方法
3.补充
3.1.文件、文件夹选择框
一般而言,将文件选择或文件夹选择绑定在一个按钮上
文件选择
import filedialog
def choose_directory():
virtual_file_path = tkinter.filedialog.askopenfilename(title=u'选择文件')
pass
tk.Button(frame, text="选择文件", command=choose_directory).grid(row=3, column=4)
文件夹选择
def choose_directory():
file_path = tk.filedialog.askdirectory(title=u'选择文件夹')
tk.Button(frame, text="选择文件夹", command=choose_directory).grid(row=2, column=4)
3.2.布局方法及布局控件的选择
建议在使用时尽可能的使用布局控件,例如frame等,然后在布局控件中使用布局方法,方便进行布局的控制
3.3. 控件的variable/textvariable
大部分控件都有variable/textvariable属性,此属性相当于将值绑定到对应的变量上,一般为StringVar,也可以作为设置默认值使用,不同控件可以绑定同一个变量
3.4.Entry/Spinbox控件的validate、validatecommand、invalidcommand方法
validate:校验的逻辑:包含 "none", "focus", "focusin", "focusout", "key", "all",一般使用key即可,默认为None,不校验
validatecommand:当校验开启时,触发的方法,必须返回True或者False
invalidcommand:当validatecommand方法返回False时触发此方法
使用实例
def rule(val):
return val.isdigit() or val == ""
def incorrect():
logger.error("memory enter not digit")
# 需要手动注册校验规则
validate = (window.register(rule), "%P")
spinBox = tk.Spinbox(frame, from_=0,to=100, validate="key", validatecommand=validate, invalidcommand=incorrect)
3.5.子窗口创建及防止重复点击,重复出现
此处以菜单创建子窗口为例
def about():
# 当打开子窗口时禁用后方的主窗口,达到防止重复点击的效果
window.attributes("-disabled", True)
about_window = Toplevel(window)
about_window.title("关于")
about_window.resizable(0, 0)
about_window.focus()
about_window.geometry(f'{int(WIDTH/4)}x{int(HEIGHT/4)}+{int((window.winfo_screenwidth() - (WIDTH / 4))/2)}+{int((window.winfo_screenheight() - (HEIGHT / 4))/2)}')
# 当子窗口销毁时,聚焦到主窗口上,并撤销禁用,销毁子窗口
def delete_window():
window.focus()
window.attributes("-disabled", False)
about_window.destroy()
# 窗口销毁时触发的回调
about_window.protocol("WM_DELETE_WINDOW", delete_window)
about_menu = Menu(window)
about_menu.add_command(label="关于", command=about)
3.6.执行耗时操作
在界面执行耗时操作时建议使用多线程方式执行,否则会导致窗口卡死
3.7.常用输入框删除、添加内容
# 删除内容
text.delete(0, tkinter.END)
# 添加内容
text.insert(tkinter.INSERT, "text")
# 将光标置于最后
text.see(tkinter.END)
python自带gui插件tkinter使用小结的更多相关文章
- Python内建GUI模块Tkinter(一)
Python主窗口 Python特定的GUI界面,是一个图像的窗口,tkinter是python自带的,可以编辑的GUI界面,我们可以用GUI实现很多一个直观的功能,如何想开发一个计算器,如果只是一个 ...
- Python内建GUI模块Tkinter(二)
Python核心组件 1.Button 按钮组件:一个简单的按钮,用来执行一个命令或别的操作. 参数解析: text:指定按钮上显示的文本: anchor: 指定按钮上文本的位置(N, NE, E, ...
- Python内置GUI模块Tkinter的几点笔记
组件属性,用法 组件位置 更多
- python GUI学习——Tkinter
支持python的常见GUI工具包: Tkinter 使用Tk平台 很容易得到 半标准 wxpython 基于wxWindows.跨平台越来越流行 Python Win 只能在Windows上使用 使 ...
- python - Tkinter 模块 - python 自带的gui模块
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用. 1.创建窗口 from Tk ...
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...
- Python:GUI库tkinter(一)
学习自: Python GUI 编程(Tkinter) | 菜鸟教程 TkDocs_官方文档 1.几个常用的Python GUI库 tkinter:Python的标准Tk GUI工具包的接口. wxP ...
- Python GUI编程--Tkinter
今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)
一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 二.Tkinter 是什么 三.Tkinter 控件详细介绍 1. T ...
随机推荐
- 2022年5月11日,NBMiner发布了41.3版本,在内核中加入了100%LHR解锁器,从此NVIDIA的显卡再无锁卡一说
2022年5月11日,NBMiner发布NBMiner_41.3版本,主要提升了稳定性. 2022年5月8日,NBMiner发布NBMiner_41.0版本,在最新的内核 ...
- 关于position的relative和absolute分别是相对于谁进行定位的
position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP.RIGHT.BOTTOM.LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始 ...
- 141. Linked List Cycle - LeetCode
Question 141. Linked List Cycle Solution 题目大意:给一个链表,判断是否存在循环,最好不要使用额外空间 思路:定义一个假节点fakeNext,遍历这个链表,判断 ...
- Java类包
学习内容:Java类包 一.Java类包 1.一个完整的类名需要包名和类名的组合,每一个类都隶属于一个包. 例:完整类名--java.sql.Date 2.同一个包中类相互访问时可以不指明包名. 3. ...
- 【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
问题描述 使用Azure Storage Account的共享访问签名(Share Access Signature) 生成的终结点,连接时遇见 The Azure Storage endpoint ...
- 接口测试postman深度挖掘应用①
一.测试接口前需要搞明白的原理: 1.在讲如何使用postman时,我们首先应该要了解网络的请求相应的知识,下面以fiddle进行抓包为例分析: 通过fiddler抓包我们不难发现,客户端也就是用户会 ...
- LoRa模块无线收发通信技术详解
LoRa是一种LPWAN通信技术,它基于扩频技术而广泛应用于超长距离的无线传输场景中.现在,LoRa主要在全世界433.868.915MHz等自由频带工作.其最大特征是灵敏度高,传输距离长,工作功耗低 ...
- Linux文本搜索及截取操作
Linux文本搜索及截取操作 cat 查看 grep 搜索 awk 截取 查看dna-server.xml 文件的内容 [root@localhost servers]# cat cwag9002/w ...
- Camunda如何适配国产数据库达梦
前言 camunda流程引擎官方支持的数据库有:MySQL .MariaDB .Oracle .DB2 .PostgreSQL .SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数 ...
- SAP Web Dynpro-版本管理
您可以使用版本管理来管理对象的旧版本,比较版本,也可以重置它们. 在版本管理中,您可以存储ABAP开发对象的不同版本. 在ABAP工作台中,您可以比较不同版本的- 视图 视窗 控制器 您也可以存储对象 ...