本节介绍Spinbox组件、滑动条组件、下拉列表组件使用等!

tkinter组件

Spinbox组件

Spinbox组件是一个带有两个小箭头的文本框,用户既可以通过两个小箭头上下调整该组件内的值,也可以直接在文本框内输入内容作为该组件的值

  • 使用Spinbox组件,可通过 from_、to、increment 参数指定取值内容
  • 可通过 values 参数指定取值内容,参数值可以是 list 或 tuple
  • 可通过 textvariable 参数实现输入数据与变量双向绑定
  • 可通过 command 参数指定事件处理函数或方法,即当单击 Spinbox 的向上、向下箭头时,程序就会触发 command 选项指定的事件处理函数或方法

Spinbox 组件使用示例:

# -*- coding:utf-8 -*-from tkinter import *# 导入ttkfrom tkinter import ttkclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): ttk.Label(self.mw, text='数值选择,从20到100').pack() sb1 = Spinbox(self.mw, from_ = 20, to = 100, increment = 5) sb1.pack(fill=X, expand=YES)  ttk.Label(self.mw, text='指定values').pack() # 内容选择 # 通过command绑定事件处理方法 self.sb2 = Spinbox(self.mw, values=('Python', 'Java', 'Golang', 'JavaScript'), command = self.switch1) self.sb2.pack(fill=X, expand=YES) ttk.Label(self.mw, text='绑定变量').pack() self.intVar = IntVar() # 通过指定values选项创建Spinbox,并为之绑定变量 self.sb3 = Spinbox(self.mw, values=list(range(20, 100, 4)), textvariable = self.intVar, # 绑定变量 command = self.switch2) self.sb3.pack(fill=X, expand=YES) # 设置Spinbox的值 self.intVar.set(33)  def switch1(self): print(self.sb2.get()) def switch2(self): print(self.sb3.get())if __name__ == "__main__": mw = Tk() mw.title("Spinbox组件") # 改变窗口图标 mw.iconbitmap('leina.ico') App(mw) mw.mainloop()

滑动条组件

Scale是滑动条组件,可以为该滑动条设置最小值和最大值,也可以设置滑动条每次调节的步长。 支持如下选项:

  • from:设置该 Scale 的最小值。
  • to:设置该 Scale 的最大值。
  • resolution:设置该 Scale 滑动时的步长。
  • label:为 Scale 组件设置标签内容。
  • length:设置轨道的长度。
  • width:设置轨道的宽度。
  • troughcolor:设置轨道的背景色。
  • sliderlength:设置轨道的长度。
  • sliderrelief:设置滑块的立体样式。
  • showvalue:设置是否显示当前值。
  • orient:设置方向。该选项支持 VERTICAL 和 HORIZONTAL 两个值。
  • digits:设置有效数字至少要有几位。
  • variable:用于与变量进行绑定。
  • command:用于为该 Scale 组件绑定事件处理,函数或方法。

如果使用 ttk.Scale 组件,则更接近操作系统本地的效果,但允许定制的选项少。

# -*- coding:utf-8 -*-from tkinter import ttk,Tk,Scale,SUNKEN,YES,HORIZONTAL,Frame,X,LEFT,Label,IntVar,Radiobutton,VERTICALclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.scale = Scale(self.mw, from_ = -100, # 设置最大值 to = 100, # 设置最小值 resolution = 5, # 设置步长 label = '滑动条示例', # 设置标签内容 length = 400, # 设置轨道的长度 width = 30, # 设置轨道的宽度 troughcolor='lightblue', # 设置轨道的背景色 sliderlength=20, # 设置滑块的长度 sliderrelief=SUNKEN, # 设置滑块的立体样式 showvalue=YES, # 设置显示当前值 orient = HORIZONTAL #设置水平方向 ) self.scale.pack() # 创建一个Frame作为容器 f = Frame(self.mw) f.pack(fill=X, expand=YES, padx=10) Label(f, text='是否显示值:').pack(side=LEFT) i = 0 self.showVar = IntVar() self.showVar.set(1) # 创建两个Radiobutton控制Scale是否显示值 for s in ('不显示', '显示'): Radiobutton(f, text=s, value=i, variable=self.showVar, command=self.switch_show).pack(side=LEFT) i += 1 # 创建一个Frame作为容器 f = Frame(self.mw) f.pack(fill=X, expand=YES, padx=10) Label(f, text='方向:').pack(side=LEFT) i = 0 self.orientVar = IntVar() self.orientVar.set(0) # 创建两个Radiobutton控制Scale的方向 for s in ('水平', '垂直'): Radiobutton(f, text=s, value=i,variable=self.orientVar, command=self.switch_orient).pack(side=LEFT) i += 1  def switch_show(self): self.scale['showvalue'] = self.showVar.get() def switch_orient(self): # 根据单选框的选择设置orient选项的值 self.scale['orient'] = VERTICAL if self.orientVar.get() else HORIZONTALif __name__ == "__main__": mw = Tk() mw.title("滑动条组件使用") mw.iconbitmap('leina.ico') App(mw) mw.mainloop()

Scale 组件支持 variable 进行变量绑定,也支持使用 command 选项绑定事件处理函数或方法,这样每当用户拖动滑动条上的滑块时,都会触发 command 绑定的事件处理方法,例如如下程序:

# -*- coding:utf-8 -*-from tkinter import ttk,DoubleVar,Scale,HORIZONTAL,Tkclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): # 定义变量 self.doubleVar = DoubleVar() self.scale = Scale(self.mw, from_ = -100, # 设置最大值 to = 100, # 设置最小值 resolution = 5, # 设置步长 label = '滑动条组件', # 设置标签内容 length = 400, # 设置轨道的长度 width = 30, # 设置轨道的宽度 orient = HORIZONTAL, #设置水平方向 digits = 10, # 设置十位有效数字 command = self.change, # 绑定事件处理函数 variable = self.doubleVar # 绑定变量 ) self.scale.pack() # 设置Scale的当前值 self.scale.set(20) def change(self, value): print(value, self.scale.get(), self.doubleVar.get())if __name__ == "__main__": mw = Tk() mw.title("滑动条组件") mw.iconbitmap('leina.ico') App(mw) mw.mainloop()

通过三种方式来获取 Scale 组件的值:

  • 事件处理方法的参数来获取
  • Scale 组件提供的 get() 方法来获取
  • Scale 组件绑定的变量来获取

ttk.LabeledScale 是平台化的滑动条,它的设置参数较少,只能设置 from、to 和 compound 等有限的几个选项,而且只有水平滑动条(没有垂直的) 而且 compound 选项控制滑动条的数值标签是显示在滑动条的上方,还是滑动条的下方

# -*- coding:utf-8 -*-from tkinter import ttk,Tk,BOTTOM,YES,Xclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.scale = ttk.LabeledScale(self.mw, from_ = -100, # 设置最大值 to = 100, # 设置最小值 compound = BOTTOM # 设置显示数值的Label在下方 ) self.scale.value = -20 self.scale.pack(fill=X, expand=YES)if __name__ == "__main__": mw = Tk() mw.title("LabeledScale组件") mw.iconbitmap('leina.ico') App(mw) mw.mainloop()

下拉列表组件

Combobox 是下拉列表组件,用法更加简单

  • values 设置多个选项
  • state 选项支持‘readonly’状态,该状态代表 Combobox 的文本框不允许编辑,只能通过下拉列表框的列表项来改变
  • textvariable 变量绑定
  • postcommand 选项指定事件处理函数,当用单击 Combobox 的下拉箭头时,会触发 postcomrnand 选项指定的事件处理函数
# -*- coding:utf-8 -*-from tkinter import ttk,Tk,TOP,StringVar,Frame,IntVar,Checkbutton,LEFT,Button,messageboxclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.strVar = StringVar() # 创建下拉列表框 self.cb = ttk.Combobox(self.mw, textvariable=self.strVar, # 绑定到self.strVar变量 postcommand=self.choose) # 当用户单击下拉箭头时触发self.choose方法 self.cb.pack(side=TOP) # 为下拉列表框配置多个选项 self.cb['values'] = ['Python', 'Java', 'JS', 'golang'] f = Frame(self.mw) f.pack() self.isreadonly = IntVar() # 创建Checkbutton,绑定到self.isreadonly变量 Checkbutton(f, text = '是否只读:', variable=self.isreadonly, command=self.change).pack(side=LEFT) # 创建Button,单击该按钮激发setvalue方法 Button(f, text = '绑定变量设置', command=self.setvalue).pack(side=LEFT)  def choose(self): # 获取Combbox的当前值 messagebox.showinfo(title=None, message=str(self.cb.get())) def change(self): self.cb['state'] = 'readonly' if self.isreadonly.get() else 'enable' def setvalue(self): self.strVar.set('ALL IT Lesson')if __name__ == "__main__": mw = Tk() mw.title("下拉列表组件") App(mw) mw.mainloop()

tkinter frame背景色_Tkinter教程-基础组件(三)相关推荐

  1. 7.Flutter教程 — 基础组件综合实例

    前言:终于到了大家最期待的综合实例 阅读完这节内容可以帮你巩固提升! 正文: 老规矩先上效果图,毕竟有图有真相! 源码找我领取哦,在文章最下面~ 先分析一下效果图 第一步:实现底部跳转栏 小T这里是五 ...

  2. 微信小程序weui在线入门教程-基础组件-badge徽章

    效果图 微信小程序交流群:111733917 | 微信小程序从0基础到就业的课程:https://edu.csdn.net/topic/huangjuhua Wxml代码 <view class ...

  3. 【SQL Server】入门教程-基础篇(三)

    目录

  4. python基础教程第三版怎么样-Python基础教程(第三版)(七)再谈抽象

    菜鸡的学习笔记. 7.1 对象魔法 多态:可对不同类型的对象执行相同的操作,但是操作将随对象所属的类型而异: 封装:对外隐藏对象内部工作原理的细节: 继承:可基于通用类创建出专用类. 按作者的意思,多 ...

  5. python基础教程第三版-Python基础教程(第三版)(七)再谈抽象

    菜鸡的学习笔记. 7.1 对象魔法 多态:可对不同类型的对象执行相同的操作,但是操作将随对象所属的类型而异: 封装:对外隐藏对象内部工作原理的细节: 继承:可基于通用类创建出专用类. 按作者的意思,多 ...

  6. Python基础教程(第三版)

    Python基础教程(第三版)

  7. Timo学习笔记 :Python基础教程(第三版)第四章 当索引行不通时

    第四章 当索引行不通时 Timo学习笔记 :Python基础教程(第三版)第三章 使用字符串 这是word编辑的最后一章笔记,第五章开始将直接用这个模板记录. 本章笔记很少,也很简单.很多方法可以到要 ...

  8. 《机器学习系列教程》第三章 深度学习基础

    @[第三章 深度学习基础] 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 为了描述神经网络,我们先从最简单的神经网络说起. 感知机 简单的感知机如下图所示: [外链图片转存失败( ...

  9. Tkinter全功能参考教程

    参数参考:Tkinter汇总 -  https://blog.csdn.net/u014380159/article/details/51941842 treeview:(可编辑.新建单元格) htt ...

最新文章

  1. 项目经验分享——Java常用工具类集合 转
  2. python画图-Python数据可视化之画图
  3. 移动金融业务风控框架及设备风险识别的意义(下)
  4. 联想笔记本电脑无法在编码中直接使用Home和End快捷键需要+fn解决方案
  5. 大话设计模式—命令模式
  6. 【AcWing 235. 魔法珠
  7. 国家开放大学2021春1257混凝土结构设计原理题目
  8. [html] 说说你对H5的ServiceWorker的理解,它有什么运用场景?
  9. java厨房_JAVA环境搭建,厨房安装图文教程!
  10. Android4.0升级新特性
  11. 三部委明确能源互联网建设10重点
  12. 改了个字符串 项目无法启动,springboot循环依赖问题分析
  13. Objective--C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)
  14. [转]访问 OData 服务 (WCF Data Services)
  15. Atitit react 详细使用总结 绑定列表显示 attilax总结 1. 前言 1 1.1. 资料数量在百度内的数量对比 1 1.2. 版本16 v15.6.1 1 1.3. 引入js 2
  16. 添加购物车功能全部代码
  17. [含论文+答辩PPT+任务书+源码等]javaweb户籍户口管理系统
  18. matlab mse mae,回归评价指标MSE、RMSE、MAE、R-Squared
  19. [机缘参悟-28]:鬼谷子-内揵篇-保全自己,说服上司
  20. 树与二叉树基本性质相关

热门文章

  1. Flink 流式计算在节省资源方面的简单分析
  2. leetcode 322. Coin Change | 322. 零钱兑换(动态规划)
  3. 技术回顾系列:最新最热门的技术大事-第一周
  4. 一致性协议raft详解(三):raft中的消息类型
  5. Java实现心跳机制
  6. 【MySQL性能优化】概述与优化方面(一)
  7. Mysql常用30种SQL查询语句优化方法
  8. 使用memcache缓存
  9. Vue_异步加载_vue-resource(不再维护)
  10. 1039 Course List for Student (25 分)_33行代码AC