python tkinter 各控件属性 全

1.Button 按钮。相似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操做/事件数据库

2.Canvas 画布。提供绘图功能(直线、椭圆、多边形、矩形) ;能够包含图形或位图canvas

3.Checkbutton 选择按钮。一组方框,能够选择其中的任意个(相似 HTML 中的 checkbox)app

4.Entry 文本框。单行文字域,用来收集键盘输入(相似 HTML 中的 text)框架

5.Frame 框架。包含其余组件的纯容器编辑器

6.Label 标签。用来显示文字或图片ide

7.Listbox 列表框。一个选项列表,用户能够从中选择函数

8.Menu 菜单。点下菜单按钮后弹出的一个选项列表,用户能够从中选择工具

9.Menubutton 菜单按钮。用来包含菜单的组件(有下拉式、层叠式等等)测试

10.Message 消息框。相似于标签,但能够显示多行文本字体

11.Radiobutton 单选按钮。一组按钮,其中只有一个可被“按下” (相似 HTML 中的 radio)

12.Scale 进度条。线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值

13.Scrollbar 滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能

14.Text 文本域。 多行文字区域,可用来收集(或显示)用户输入的文字(相似 HTML 中的 textarea)

15.Toplevel 顶级。相似框架,但提供一个独立的窗口容器。


Tkinter支持15个核心的窗口部件,这个15个核心窗口部件类列表以下:

窗口部件及说明:

Button:
一个简单的按钮,用来执行一个命令或别的操做。

Canvas:
组织图形。这个部件能够用来绘制图表和图,建立图形编辑器,实现定制窗口部件。

Checkbutton:
表明一个变量,它有两个不一样的值。点击这个按钮将会在这两个值间切换。

Entry:
文本输入域。

Frame:
一个容器窗口部件。帧能够有边框和背景,当建立一个应用程序或dialog(对话)版面时,帧被用来组织其它的窗口部件。

Label:
显示一个文本或图象。

Listbox:
显示供选方案的一个列表。listbox可以被配置来获得radiobutton或checklist的行为。

Menu:
菜单条。用来实现下拉和弹出式菜单。

Menubutton:
菜单按钮。用来实现下拉式菜单。

Message:
显示一文本。相似label窗口部件,可是可以自动地调整文本到给定的宽度或比率。

Radiobutton:
表明一个变量,它能够有多个值中的一个。点击它将为这个变量设置值,而且清除与这同一变量相关的其它radiobutton。

Scale:
容许你经过滑块来设置一数字值。

Scrollbar:
为配合使用canvas, entry, listbox, and text窗口部件的标准滚动条。

Text:
格式化文本显示。容许你用不一样的样式和属性来显示和编辑文本。同时支持内嵌图象和窗口。

Toplevel:
一个容器窗口部件,做为一个单独的、最上面的窗口显示。

注意在Tkinter中窗口部件类没有分级;全部的窗口部件类在树中都是兄弟。

全部这些窗口部件提供了Misc和几何管理方法、配置管理方法和部件本身定义的另外的方法。此外,Toplevel类也提供窗口管理接口。这意味一个典型的窗口部件类提供了大约150种方法。

Button窗口部件

Button(按钮)窗口部件是一个标准的Tkinter窗口部件,用来实现各类按钮。按钮可以包含文本或图象,而且你可以将按钮与一个Python函数或方法相关联。当这个按钮被按下时,Tkinter自动调用相关联的函数或方法。

按钮仅能显示一种字体,可是这个文本能够跨行。另外,这个文本中的一个字母能够有下划线,例如标明一个快捷键。默认状况,Tab键用于将焦点移动到一个按钮部件。

1、那么何时用按钮部件呢?

简而言之,按钮部件用来让用户说“立刻给我执行这个任务”,一般咱们用显示在按钮上的文本或图象来提示。按钮一般用在工具条中或应用程序窗口中,而且用来接收或忽略输入在对话框中的数据。

关于按钮和输入的数据的配合,能够参看Checkbutton和Radiobutton部件。

2、样式

普通的按钮很容易被建立,仅仅指定按钮的内容(文本、位图、图象)和一个当按钮被按下时的回调函数便可:
b = Button(master, text="OK", command=self.ok)

没有回调函数的按钮是没有用的,当你按下这个按钮时它什么也不作。你可能在开发一个应用程序的时候想实现这种按钮,好比为了避免干扰你的beta版的测试者:
b = Button(master, text="Help", state=DISABLED)

如 果你没有指定尺寸,按钮的大小将正好可以容纳它的内容。你能够用padx和pady选项来增长内容与按钮边框的间距。你也能够用height和width 选项来显式地设置按钮的尺寸。若是你在按钮中显示文本,那么这些选项将以文本的单位为定义按钮的尺寸。若是你替而代之显示图象,那么按钮的尺寸将是象素 (或其它的屏幕单位)。你实际上甚至可以用象素单位来定义文本按钮的尺寸,但这可能带来意外的结果。下面是指定尺寸的一段例子代码:
f = Frame(master, height=32, width=32)
f.pack_propagate(0) # don't shrink
b = Button(f, text="Sure!")
b.pack(fill=BOTH, expand=1)


按钮可以显示多行文本(但只能用一种字体)。 你可使用多行或wraplength选项来使按钮本身调整文本。当调整文本时,使用anchor,justify,也可加上padx选项来获得你所但愿的格式。一个例子以下:
b = Button(master, text=longtext, anchor=W, justify=LEFT, padx=2)

为了使一个普通的按钮看起来像凹入的,例如你想去实现某种类型的工具框,你可简单地将relief的值从"RAISED"改变为"SUNKEN:
b.config(relief=SUNKEN)

你也可能想改变背景。注意:一个大概更好的解决方案是使用一个Checkbutton或Radiobutton其indicatoron选项的值设置为false:
b = Checkbutton(master, image=bold, variable=var, indicatoron=0)

3、方法

Button窗口部件支持标准的Tkinter窗口部件接口,加上下面的方法:

flash():频繁重画按钮,使其在活动和普通样式下切换。

invoke() :调用与按钮相关联的命令。

下面的方法与你实现本身的按钮绑定有关:

tkButtonDown(), tkButtonEnter(), tkButtonInvoke(), tkButtonLeave(), tkButtonUp() 
这些方法能够用在定制事件绑定中,全部这些方法接收0个或多个形参。

4、选项

Button窗口部件支持下面的选项:

activebackground, activeforeground
类型:颜色;
说明:当按钮被激活时所使用的颜色。

anchor
类型:常量;
说明:控制按钮上内容的位置。使用N, NE, E, SE, S, SW, W, NW, or CENTER这些值之一。默认值是CENTER。

background (bg), foreground (fg)
类型:颜色;
说明:按钮的颜色。默认值与特定平台相关。

bitmap
类型:位图;
说 明:显示在窗口部件中的位图。若是image选项被指定了,则这个选项被忽略。下面的位图在全部平台上都有 效:error, gray75, gray50, gray25, gray12, hourglass, info, questhead, question, 和 warning.

这 后面附加的位图仅在Macintosh上有 效:document, stationery, edition, application, accessory, folder, pfolder, trash, floppy, ramdisk, cdrom, preferences, querydoc, stop, note, 和 caution.

你也能够从一个XBM文件中装载位图。只须要在XBM文件名前加一个前缀@,例如"@sample.xbm"。

borderwidth (bd)
类型:整数;
说明:按钮边框的宽度。默认值与特定平台相关。但一般是1或2象素。

command
类型:回调;
说明:当按钮被按下时所调用的一个函数或方法。所回调的能够是一个函数、方法或别的可调用的Python对象。

cursor
类型:光标;
说明:当鼠标移动到按钮上时所显示的光标。

default
类型:常量;
说明:若是设置了,则按钮为默认按钮。注意这个语法在Tk 8.0b2中已改变。

disabledforeground
类型:颜色;
说明:当按钮无效时的颜色。

font
类型:字体;
说明:按钮所使用的字体。按钮只能包含一种字体的文本。

highlightbackground, highlightcolor
类型:颜色;
说明:控制焦点所在的高亮边框的颜色。当窗口部件得到焦点的时候,边框为highlightcolor所指定的颜色。不然边框为highlightbackground所指定的颜色。默认值由系统所定。

highlightthickness
类型:距离;
说明:控制焦点所在的高亮边框的宽度。默认值一般是1或2象素。

image
类型:图象;
说明:在部件中显示的图象。若是指定,则text和bitmap选项将被忽略。

justify
类型:常量;
说明:定义多行文本如何对齐。可取值有:LEFT, RIGHT, 或 CENTER。

padx, pady
类型:距离;
说明:指定文本或图象与按钮边框的间距。

relief
类型:常量;
说明:边框的装饰。一般按钮按下时是凹陷的,不然凸起。另外的可能取值有GROOVE, RIDGE, 和 FLAT。

state
类型:常量;
说明:按钮的状态:NORMAL, ACTIVE 或 DISABLED。默认值为NORMAL。

takefocus
类型:标志;
说明:代表用户能够Tab键来将焦点移到这个按钮上。默认值是一个空字符串,意思是若是按钮有按键绑定的话,它能够经过所绑定的按键来得到焦点。

text
类型:字符串;
说明:显示在按钮中的文本。文本能够是多行。若是bitmaps或image选项被使用,则text选项被忽略。

textvariable
类型:变量;
说明:与按钮相关的Tk变量(一般是一个字符串变量)。若是这个变量的值改变,那么按钮上的文本相应更新。

underline
类型:整数;
说明:在文本标签中哪一个字符加下划线。默认值为-1,意思是没有字符加下划线。

width, height
类型:距离;
说明:按钮的尺寸。若是按钮显示文本,尺寸使用文本的单位。若是按钮显示图象,尺寸以象素为单位(或屏幕的单位)。若是尺寸没指定,它将根据按钮的内容来计算。

wraplength
类型:距离;
说明:肯定一个按钮的文本什么时候调整为多行。它以屏幕的单位为单位。默认不调整。

Mixins

Tkinter模块提供了相应于Tk中的各类窗口部件类型的类和必定数量的mixin和别的帮助类(mixin是一个类,被设计来使用多态继承与其它的类结合)。当你使用Tkinter时,你不将直接访问mixin类。

1、实施mixins

经过root窗口和窗口部件类,Misc类被用做mixin。它提供了大量的Tk和窗口相关服务,这些服务对全部Tkinter核心窗口部件者有效。这些经过委托完成;窗口部件仅仅直接请求适当的内部对象。

Wm类经过root窗口和顶级窗口部件类被用做mixin。经过委托它提供了窗口管理服务。

使用委托像这样简化你的应用程序代码:一旦你有一窗口部件,你可以使用这个窗口部件的实例的方法访问Tkinter的全部部份。

2、Geometry(几何学)与mixins

Grid,Pack,Place这些类经过窗口部件类被用做mixins。经过委托,它们也提供了访问不一样几何管理的支持。
下面是Geometry Mixins的列表及说明:
管理器及说明:

Grid:grid几何管理器容许你经过在一个二维网格中组织窗口部件来建立一个相似表的版面。
Pack:pack几何管理器经过在一个帧中把窗口部件包装到一个父部件中来建立一个版面。为了对窗口部件使用这个几何管理器,咱们在这个窗口部件上使用pack方法来集成。
Place:place几何管理器让你显式将一个窗口部件放到给定的位置。要使用这个几何管理器,需使用place方法。

3、窗口部件配置管理
Widget类使用 geometry mixins来混合Misc类,并经过cget和configure方法来增长配置管理,也能够经过一个局部的字典接口。 

窗口部件的配置

要配置一个窗口部件的外观,你用选项比使用方法调用好。典型的选项包括text、color、size、command等等。对于处理选项,全部的核心窗口部件执行一样的配置接口:

配置接口

widgetclass(master, option=value, ...) => widget 
说明:
创 建这个窗口部件的一个实例,这个实例做为给定的master的孩子,而且使用给定的选项。全部的选项都有默认值,所以在简单的状况下,你仅须要指定这个 master。若是你想的话,你也能够不指定master;Tkinter这时会使用最近建立的root窗口做为master。注意这个name选项仅能 在窗口部件被建立时设置。

cget(option) => string 
说明:
返回一个选项的当前值。选项的名字和返回值都是字符串。要获得name选项,使用str(widget)代替。

configure(option=value, ...), config(option=value, ...) 
说明:
设置一个或多个选项(做为关键字参数给定)。
注意一些选项的名字与Python中的保留字相同(class,from等)。要使用这些做为关键字参数,仅须要在这些选项名后添加一下划线(class_,from_)。注意你不能用此方法来设置name选项;name选项只能在窗口部件被建立时设置。

为了方便起见,窗口部件也实现一个局部的字典接口。 __setitem__ 方法映射configure,而__getitem__方法映射cget。你可使用下面的语法来设置和查询选项:
value = widget[option]
widget[option] = value
注意每一个赋值都致使一个对Tk的调用。若是你但愿去改变多个选项,单独地调用(config或configure)去改变它们是一个好的主意。

这下面的字典方法也适用于窗口部件:
keys() => list 
说明:
返回窗口部件中全部能够被设置的选项的一个列表。name选项不包括在这个列表中(它不能经过字典接口被查询或修改)。

向后兼容性

关键字参数在Python1.3时被引入。以前,使用原始的Python字典将选项传递给窗口构造器和configure方法。原代码相似以下:
self.button = Button(frame, {"text": "QUIT", "fg": "red", "command": frame.quit})
self.button.pack({"side": LEFT})


关键字参数语法更优雅和少容易发生错误。可是为了与存在的代码兼容,Tkinter仍支持老的语法。在新的程序中你不该再用老的语法,即便是在某些状况下是颇有吸引力的。例如,若是你建立了一个定制的窗口部件,它须要沿它的父类传递配置选项,你的代码可能以下:
def __init__(self, master, **kw):
    Canvas.__init__(self, master, kw) 
# kw 是一个字典
上面的代码在当前版本的Tkinter下工做的很好,可是它在未来的版本下可能不工做。一个一般的办法是使用apply函数:
def __init__(self, master, **kw):
    apply(Canvas.__init__, (self, master), kw)

这个apply函数使用了一个函数(一个未约束的方法),一个带参数的元组(它必须包括self,由于咱们调用一个未约束的方法),一个可选的,提供了关键字参数的字典。

窗口部件的样式之颜色

全部的Tkinter标准窗口部件提供了一套样式设置选项,这让你能够去修改这些窗口部件的外观如颜色、字体和其它的可视外观。

颜色

大部份窗口部件都容许你指定窗口部件和文本的颜色,这可使用background和foreground选项。要指定颜色,你可使用颜色名,也可使用红、绿、蓝颜色组合。

一、颜色名
Tkinter 包括一个颜色数据库,它将颜色名映射到相应的RGB值。这个数据库包括了一般的名称如Red, Green, Blue, Yellow, 和 LightBlue,也可以使用外来的如Moccasin,PeachPuff等等。在X window系统上,颜色名由X server定义。你可以找到 一个名为xrgb.txt的文件,它包含了一个由颜色名和相应RGB值组成的列表。在Windows和Macintosh系统上,颜色名表内建于Tk中。

在Windows下,你可使用Windows系统颜色(用户能够经过控制面板来改变这些颜色):
SystemActiveBorder, SystemActiveCaption, SystemAppWorkspace, SystemBackground, 
SystemButtonFace, SystemButtonHighlight, SystemButtonShadow, SystemButtonText, 
SystemCaptionText, SystemDisabledText, SystemHighlight, SystemHighlightText, 
SystemInactiveBorder, SystemInactiveCaption, SystemInactiveCaptionText, SystemMenu, 
SystemMenuText, SystemScrollbar, SystemWindow, SystemWindowFrame, SystemWindowText。


在Macintosh上,下面的系统颜色是有效的:
SystemButtonFace, SystemButtonFrame, SystemButtonText, SystemHighlight, SystemHighlightText, SystemMenu, SystemMenuActive, SystemMenuActiveText, SystemMenuDisabled, SystemMenuText, SystemWindowBody。颜色名是大小写不敏感的。许多颜色名词与词之间有无格都有效。例如"lightblue", "light blue", 和 "Light Blue"都是同一颜色。二、RGB格式若是你须要显式地指定颜色名,你可使用以下格式的字符串:#RRGGBBRR, GG, BB 分别是red,green和blue值的十六进制表示。下面的例子演示了如何将一个颜色三元组转换为一个Tk颜色格式:tk_rgb = "#%02x%02x%02x" % (128, 192, 200)Tk也支持用形如"#RGB"和"rrrrggggbbbb"去分别指定16和65536程度之间的值。你可使用窗口部件的winfo_rgb方法来将一个表明颜色的字符串(名字或RGB格式)转换为一个三元组:rgb = widget.winfo_rgb("red")red, green, blue = rgb[0]/256, rgb[1]/256, rgb[2]/256注意winfo_rgb返回16位的RGB值,范围在0~65535之间。要将它们映射到更通用的0~255范围内,你必须将每一个值都除以256(或将它们向右移8位)。

相关文章
相关标签/搜索