Tkinter库的学习记录-4

发布时间:2026/9/17 9:17:05

Tkinter库的学习记录-4 9、与数字有关的Wiget介绍两个可以使用图形接口选取数值的Widget控件Scale和Spinbox9-1 Scale的数值输入控制9-1-1 Scale的基本概念Scale可以翻译为尺度。Python的tkinter模块中有Widget控件Scale这是一种图形接口输入功能我们可以移动尺度条产生某一范围的数字。建立尺度条的方法是Scale()它的构造方法如下。Scale(父对象, option, ...)参数一同上options参数(1) activebackground鼠标光标在尺度条上时的背景颜色。(2) bg或background背景色彩。(3) borderwidth或bd边界宽度默认是2像素。(4) command当使用者更改数值时会自动执行此函数。(5) cursor当鼠标光标在复选框上时的光标形状、(6) digits尺度数值读取时需使用IntVar、DoubleVar或StringVar变量类型读取。(7) fg文字色彩。(8) font字形(9) from_尺度条范围值的初值。(10) highlightbackground当尺度条取得焦点时背景颜色。(11) highlightcolor当尺度条取得焦点时的颜色。(11) justify当含多行文字时最后一行的对齐方式。(12) label默认是没有标签文字如果尺度条是水平的则此标签出现在左上角如果尺度条是垂直的则此标签出现在右上角。(13) length默认是100像素。(14) orient默认是水平可以设置水平HORIZONTAL或垂直VERTICAL。(15) relief默认是reliefFLAT可由此更改边界外观。(16) repeatdelay可设置需要按住尺度条多久后才可移动此尺度条单位是ms默认是300。(17) resolution每次更改的数值例如from_2.0to4.0如果将resolution设为0.5则尺度可能数值是2.0、2.5、3.0、3.5、4.0.(18) showvalue正常会显示尺度条的目前值如果设为0则不显示。(19) state输入状态DISABLE则暂时无法使用此Scale。(20) takefocus正常时此尺度条可以循环取得焦点如果设为0则无法取得焦点。(21) tickinterval尺度条的标记刻度例如from_2.0 to3.0tickinterval0.25则刻度是2.0、2.25、2.50、2.75和3.0。(22) to尺度条范围值的末端值。(23) troughcolor槽(trough)的颜色。(24) variable设置或取得目前选取的尺度值它的值类型通常是IntVar或StringVar。(25) width对于垂直尺度条这是槽的宽度对于水平尺度条这是槽的高度。下面程序实例一个产生水平尺度条与垂直尺度条的应用。尺度值的范围在0~10垂直尺度条使用默认长度水平尺度条则设为300。from tkinter import * window Tk() window.title(ch9_1) slider1 Scale(window, from_0, to10).pack() slider2 Scale(window, from_0, to10, length300, orienthorizontal).pack() window.mainloop()执行结果下面程序实例设置Scale()构造方法中的多个参数。from tkinter import * window Tk() window.title(ch9_2) slider Scale(window, from_0, # 起点值 to10, # 终点值 troughcoloryellow, # 槽的颜色 width30, # 槽的高度 tickinterval2, # 刻度 labelMy Scale, # Scale标签 length300, # Scale长度 orientHORIZONTAL) # 水平 slider.pack() window.mainloop()执行结果9-1-2取得与设置Scale的尺度值设计GUI程序时可以使用set()方法设置尺度的值可以使用get()方法取得尺度的值。下面程序实例使用set()设置尺度初值使用get()获得尺度值。当单击Print按钮时可以在Python Shell窗口中列出垂直和水平的尺度值。from tkinter import * def printInfo(): print(垂直%d水平%d % (sV.get(), sH.get())) window Tk() window.title(ch9_3) sV Scale(window, from_0, to10, label垂直) sV.set(5) sV.pack() sH Scale(window, from_0, to10, orientHORIZONTAL, label水平, length300) sH.set(5) sH.pack() Button(window, textPrint, commandprintInfo).pack() window.mainloop()执行结果9-1-3 使用Scale设置窗口背景颜色messagebox参数详解messagebox.showinfo(title, message, parentwindow名)监听字符串self.emp_internation.trace_add(write, self.count_salary)self.emp_internation为创建的字符串变量ttk.String()trace_add(write, 函数名)监听字符串变量写入之后需要干什么。表头组件创建表格组件ttk.Treeview(columns[, , ], show)参数表头标识 columns 参数后面可以接列表列表中有几个元素就增加几个表头去除默认表头 showheadingsttk样式组件一、基础使用示例style ttk.Style() # 查看ttk的组件样式 print(style.theme_names()) # ttk组件主题设置 style.theme_use() # 设置默认标签样式 style.configure(TLabel, foregroundred, font(宋体, 16)) # ttk Label组件参数绑定stylelogin-TLabel就可以设置下面样式了 style.configure(login-TLabel, foregroundred, font(宋体, 16)) # 默认按钮样式 style.configure(TButton, font(宋体, 12)) # 默认单选框样式 style.configure(TRadiobutton, font(宋体, 12)) # 默认表头标题 style.configure(Treeview.Heading, font(宋体, 16)) # 默认表内容样式 style.configure(Treeview, font(宋体, 14))ttk.Treeview表格组件一、基础使用示例先看一个完整的代码示例可以直接复制运行import tkinter as tk from tkinter import ttk root tk.Tk() root.title(简易表格示例) # 创建表格 table ttk.Treeview(root) # 定义列注意第一列#0是隐藏的树形列通常留空 table[columns] (姓名, 年龄, 城市) # 设置列属性 table.column(#0, width0, stretchtk.NO) # 隐藏第一列 table.column(姓名, width100, anchortk.W) # 列宽度和对齐方式 table.column(年龄, width60, anchortk.CENTER) table.column(城市, width120, anchortk.E) # 设置表头 table.heading(姓名, text姓名) # 列标题 table.heading(年龄, text年龄) table.heading(城市, text城市) # 添加数据 table.insert(, end, values(张三, 25, 北京)) # 插入一行数据 table.insert(, end, values(李四, 30, 上海)) table.insert(, end, values(王五, 28, 广州)) # 显示表格 table.pack(pady20) root.mainloop()二、核心参数详解1. 列配置column方法width列宽度单位像素anchor对齐方式tk.W左对齐tk.CENTER居中tk.E右对齐minwidth最小宽度可拖动调整列宽时有效stretch是否允许拉伸tk.YES/tk.NOtable.column(姓名, anchorcenter, width90)2. 表头设置heading方法text显示的表头文字command点击表头时触发的回调函数用于排序功能table.heading(年龄, text年龄, commandlambda: sort_by_age())3. 插入数据insert方法parent父节点通常用空字符串表示根节点index插入位置end表示末尾tk.END也可以从最后一行开始追加values数据内容元组形式长度需与列数匹配iid可选参数为行指定唯一标识符table.insert(, end, iidrow1, values(张三, 25, 北京))4. 其他常用方法删除行table.delete(iid)获取选中行table.selection()获取行数据table.item(iid, values)修改数据table.item(iid, values新数据)获取选中行的idtable.identify_row(event.y)获取所有行的idtable.get_children()查询id的下标table.get_children().index(id)三、样式美化1. 修改字体颜色style ttk.Style() style.configure(Treeview, rowheight25, # 行高 font(微软雅黑, 11), foreground#333, background#fff) # 设置斑马线效果隔行变色 style.map(Treeview, background[(selected, #0078D7), (!selected, #f0f0f0)])2. 添加滚动条# 纵向滚动条 y_scroll ttk.Scrollbar(root, orientvertical, commandtable.yview) table.configure(yscrollcommandy_scroll.set) y_scroll.pack(sidetk.RIGHT, filltk.Y) # 横向滚动条同理orienthorizontal四、常见问题为什么表格不显示数据检查是否执行了insert插入数据确认列名与columns定义一致如何实现点击排序需要自定义排序函数def sort_by_col(col, reverse): data [(table.set(child, col), child) for child in table.get_children()] data.sort(reversereverse) for index, (val, child) in enumerate(data): table.move(child, , index) table.heading(col, commandlambda: sort_by_col(col, not reverse))如何获取选中行数据selected table.selection() if selected: print(table.item(selected[0], values))五、完整功能示例带编辑功能# 点击单元格编辑功能 def edit_cell(event): region table.identify_region(event.x, event.y) if region cell: column table.identify_column(event.x) iid table.focus() current_value table.item(iid, values)[int(column[1])-1] # 创建编辑框 entry tk.Entry(root) entry.place(xevent.x, yevent.y) entry.insert(0, current_value) def save_edit(): new_value entry.get() values list(table.item(iid, values)) values[int(column[1])-1] new_value table.item(iid, valuesvalues) entry.destroy() entry.bind(Return, lambda e: save_edit()) table.bind(Double-1, edit_cell)滚动条ttk.Scrollbar用于滚动一些组件的可见范围根据方向可分为垂直滚动条和水平滚动条。组件常常被用于实现文本、画布和列表框的滚动。在名为parent的顶级窗口或框架中创建一个新的滚动条组件:# 创建滚动条 command需要绑定的应用组件yview scroll_bar ttk.Scrollbar(main_window, commandtable.yview) # 表格绑定滚动条 table.config(yscrollcommandscroll_bar.set) # 滚动条布局 scroll_bar.place(x1313, y80, height645)
延伸阅读

更多相关文章

2026/9/17 12:07:59

B4069 [GESP202412 四级] 字符排序

题目来源: https://www.luogu.com.cn/problem/B4069 题目背景 对应的选择、判断题:试题 - GESP 202412 C 四级 - 洛谷有题 题目描述 小杨有 n 个仅包含小写字母的字符串 s1​,s2​,…,sn​,小杨想将这些字符串按一定顺序排列后拼接到一起…

2026/9/17 16:15:34

python环境|conda安装和使用(1)

python环境|conda安装和使用(1) 简述Anaconda和Miniconda安装步骤(Miniconda)conda-forge仓库配置调整conda-forge仓库配置镜像环境变量配置 python环境|conda安装和使用(1) 简述 Conda 是一个通用的包管理系统和环境管理系统,不限于 Python(也能管理…

2026/9/17 13:35:04

面波处理方法-每日实验log

6/16/2026 今天调试了MCCFJ代码,对10炮被动源模拟数据进行频散谱计算。拿到了SWAPS代码,用来进行互相关和频散谱计算。任务:实现批处理台针对,转为python,加numba库。 今天跑了一下但没有完全跑通,因为有些…

2026/9/17 17:10:16

顺丰作业成本法实践:两阶段分摊、成本动因与SQL核算引擎

简介:这份资源是山东财经大学燕山学院的一篇本科毕业设计(论文)文档,题目为《作业成本法在顺丰快递公司的应用研究》,适合成本管理、物流管理、财务管理方向的在校生与从业者参考。论文以顺丰快递为案例,梳…

2026/9/17 17:10:16

EB tresos 29.0.0安装配置与MCAL开发实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/17 17:10:16

Left 4 Dead 2 地图制作环境整合指南:从Hammer到VPK

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/17 17:10:16

从一条 stk_auction 代码到 A 股全市场当日竞价快照脚本

从一条 stk_auction 代码到 A 股全市场当日竞价快照脚本 【免费下载链接】Vibe-Trading "Vibe-Trading: Your Personal Trading Agent" 项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading A 股的 9:15–9:25 集合竞价(集中收集委托、…

2026/9/17 17:05:16

Fluent多相流模型怎么选?VOF/Mixture/Eulerian适用边界与实战详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/17 0:03:13

WiFi密码安全测试:从原理到实战的字典暴力破解指南

1. 写在前面:我为什么要研究WiFi密码这件事先交代一下背景。我身边有不少朋友,家里的WiFi密码常年是"12345678"或者"88888888",问就是"好记"。直到有一次,隔壁邻居蹭网蹭到我家路由器后台都进不去&…

2026/9/17 0:03:13

redis-py服务控制与监控函数实战:从ping到slowlog的巡检指南

我用 redis-py 写了快五年的业务代码,坦白说,真正让我觉得这个客户端“像一个成熟工具箱”的,不是 get/set 那套基本操作,而是它那批专门做服务控制与状态监控的辅助函数。日常开发里,大家把redis.Redis(host..., deco…

2026/9/17 0:03:13

SpringBoot+Vue3实现中小企业设备管理系统开发实践

1. 项目概述与核心价值中小企业设备管理系统是制造业、服务业等领域的基础信息化工具。传统设备管理往往依赖Excel表格或纸质记录,存在数据孤岛、流程混乱、维护成本高等痛点。这套基于Java SpringBootVue3MyBatis的技术方案,通过前后端分离架构实现了设…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码