Tkinter笔记(2)——组件属性

属性字典

任何组件的属性配置实际上都是一个字典。该字典中,key就是属性选项的名称,value则是5元组,分别为:选项名称、数据库中的选项名称(Database Name)、数据库中的选项类(Database Class)、默认值、当前值。如:'background': ('background', 'background', 'Background', <string object: 'SystemButtonFace'>, 'SystemButtonFace'),当然重点关注最后两个字段。不过对于bg这种简写,value则是2元组,分别为该简写的选项名称以及其对应的选项全名,如:'bg': ('bg', '-background')。此外,使用cget(option)可以直接获取到指定选项当前的设置值。keys()方法则为获取该组件所有可以配置的选项名称。

属性设置方法

组件的样式和作用往往就通过设置各种属性来实现,设置组件各种属性的方法也有很多。

初始化时设置

首先可以在初始化组件的时候就将属性作为关键字参数批量加入,如:

btn = tk.Button(root, fg="red", bg="blue")

字典方式设置

之前提到,任何组件的属性配置实际上都是一个dict,因此在组件对象构建后,可以直接以字典的方式访问或修改字典对应的设置,如:

btn["fg"] = "red"
btn["bg"] = "blue"

注意每通过该方式修改一次就进行一次tk命令调用,较为浪费。

config方法设置

config()configure()函数不带参数调用时就是获取该组件的配置字典。而带有关键字参数调用时就是对属性的设置。每次调用该方法进行了一次tk命令调用,但该方法调用一次可以同时设置多个参数,因此较为高效。如:

btn.config(fg="red", bg="blue")

标准属性

尽管有很多组件,不同的组件也有不同的属性,但一些标准属性是大部分组件都会用到的,可以在Tk官网上查找到关于标准属性的说明文档。在此记录一些常用的:

  • backgroundbg, foregroundfg:对应组件的背景色和前景色,前景色往往就是指文字颜色;
  • borderwidthbd:边框宽度,正整数,以像素为单位;
  • relief:定义组件的边框样式,有"raised", “sunken”, “flat”, “groove”, and “ridge”;
  • activebackground, activeforeground, activeborderwidth:组件在active状态时的背景色、前景色和边框宽度,active状态就是指鼠标指向该组件并按下鼠标左键的时候;
  • disabledforeground:组件在disable状态时的前景色;
  • text:要在组件中展示的文本字符串;
  • font:文字的字体,常用一个形如'fontname fontsize fontstyles'的字符串表示,如'微软雅黑 12 bold'。其中字体名称必须,后面的参数则可选。字体大小为正数时单位为点,负数时单位为像素;
  • bitmap:即位图,有一些内置的位图可以直接使用名称,如’error’、'gray25’等,详见官方文档。对于位图文件则在文件全路径前面加上@即可,如@/root/image.bitmap
  • compound:如何共同展示文字和图片,默认为’none’,即不能同时展示文字和图片,且图像(bitmap)优先。其他可以是’bottom’, ‘top’, ‘left’, ‘right’或’center’,均表示图像相对于文字的位置;
  • image:表示组件中展示的图片,值需要为tkinter.Image或其子类的实例,支持png和gif格式。该属性优先于bitmaptextcompound,即设置该属性后就仅展示该属性定义的图片,用法举例:
    photo = tk.PhotoImage(file=os.path.abspath('./photo.png'))
    btn_img = tk.Button(root, image=photo)
    
  • anchor:表示组件中的信息展示在组件的哪个位置,用表示方向的几个字母,如"n"(北,上), “ne”(东北,右上), “e”(东,右), “se”(东南,右下), “s”(南,下), “sw”(西南,左下), “w”(西,左), “nw”(西北,左上),此外还有"center"(居中);
  • justify:表示多行文字的对齐方式,常用字符串’left’, ‘right’, ‘center’ and ‘fill’;
  • cursor:鼠标指向该组件时显示的指针图像,自带有一些,如’hand2’表示手形,也可以自定义位图文件;
  • padx, pady:分别指在水平方向和垂直方向上的内边距,以像素为单位;
  • insertbackground:表示各种可以接收输入的组件(Text、Entry等),光标的背景颜色;
  • insertwidth, insertborderwidth:分别表示输入型组件中光标的宽度和边框宽度,均以像素为单位;
  • insertofftime, insertontime:分别表示输入型组件中光标在一个闪烁周期中的显示和隐藏时间,以毫秒为单位;
  • orient:表示组件的朝向,有’horizontal’和’vertical’两个可选值;

其中所有以像素为单位的属性值,也可以使用字符串,并且如果加上指定字符的后缀,还可以表示绝对长度,其中:'c’表示厘米、'i’表示英寸、'm’表示毫米、'p’表示打印机点数。

对于颜色类型的属性,可以直接用一些颜色的名称表示颜色,不同的操作系统上不一样,官方有颜色名称列表。也可用16进制数字表示颜色,如8位颜色就是’#RRGGBB’的格式,如’#ff0000’就是红色。

tkinter库中还有一个constants.py,会在import tkinter时自动导入。其中记录的就是很多属性值对应的一些枚举字符串,如tkinter.RAISED。可以通过使用这种常量结合IDE的代码自动补全功能来防止拼写错误,并增加代码的可阅读性。

宽高属性

组件的大小可以不用主动设置,tkinter会根据其中的内容自动调整组件大小。但也可以通过heightwidth两个属性来设置组件的高和宽。不过这两个常用属性并没有出现在标准属性中。

这是由于虽然大多数组件中都有heightwidth这两个选项来设置组件的大小,但不同组件设置大小时的单位却不一样。甚至对于大多数tkinter组件,当设置了text属性用来显示文字时,width的单位是字符,表示可以容纳几个字符,height的单位就是行数,表示可以容纳几行文字;而当设置了bitmatimage用于展示图片,包括文字和图片一同展示时,这两个属性的单位则统一为像素。

动态属性

很多组件可能需要在运行过程中动态变化其中显示的文字,也可以通过config(text='new text')的方式修改,但若变化频率大的时候就很影响效率。并且对于tkinter.Entry等组件,也需要获得用户的输入值。因此很多组件除了text属性,还提供了textvariable属性。从其名称就可以看出该属性接收的是一个变量,该变量与组件显示的文字或接收的文字输入绑定。该变量需要是tkinter.StringVartkinter.IntVartkinter.DoubleVartkinter.BooleanVar四种类的实例。这四种类都还有get()方法用于获取目前绑定的文本内容;set()方法用于更新绑定的文本内容。

除了textvariable属性,tkinter.Radiobutton中还有variable属性用于绑定变量,value变量则指明该单选框被选中时,绑定变量中的值。绑定在同一个变量的单选框就归于一组,同一时间只能选定一个。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值