当前位置: 澳门新濠3559 > 编程 > 正文

GUI工具包的接口,这是一个开源的Python接口的w

时间:2019-11-08 23:18来源:编程
Tkinter模块("Tk 接口")是Python的标准TkGUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在

  Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

转载自  

Python提供了开发图形用户界面(GUI)的各种方案。下面列出最重要如下:

Tkinter 控件详细介绍,tkinter控件

Tkinter 控件详细介绍

 

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

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

3.Checkbutton 选择按钮。一组方框,可以选择其中的任意个(类似 HTML 中的 checkbox)

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

5.Frame 框架。包含其他组件的纯容器

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

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键用于将焦点移动到一个按钮部件。

一、那么什么时候用按钮部件呢?

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

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

二、样式

普通的按钮很容易被创建,仅仅指定按钮的内容(文本、位图、图象)和一个当按钮被按下时的回调函数即可:
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)

三、方法

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

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

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

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

tkButtonDown(), tkButtonEnter(), tkButtonInvoke(), tkButtonLeave(), tkButtonUp()
这些方法可以用在定制事件绑定中,所有这些方法接收0个或多个形参。

四、选项

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.
Tkinter类之窗口部件类
这 后面附加的位图仅在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类。

一、实施mixins

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

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

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

二、Geometry(几何学)与mixins

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

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

三、窗口部件配置管理
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选项。要指定颜色,你可以使用颜色名,也可以使用红、绿、蓝颜色组合。

1、颜色名
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"都是同一颜色。

2、RGB格式

如果你需要显式地指定颜色名,你可以使用如下格式的字符串:
#RRGGBB
RR, 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位)。

窗口部件的样式之字体

字体
窗口部件允许你显示文本和指定所使用的字体。所有的窗口部件都提供了合理的默认值,你很少需要去为简单元素如标签和按钮指定字体。

字体通常使用font窗口部件选项指定。Tkinter支持一定数量的不同字体描述类型:
* Font descriptors

* User-defined font names

* System fonts

* X font descriptors

Tk8.0以前的版本仅X font描述被支持。

1、字体描述
从Tk8.0开始,Tkinter支持独立于平台的字体描述。你可以使用元组来指定一个字体,这个元组包含了一个字体类型名字,一个以磅为单位的高度,代表一个或多个样式的字符串。例如:
("Times", 10, "bold")
("Helvetica", 10, "bold italic")
("Symbol", 8)

要得到默认的尺寸和类型,你可以给出作为单一字符串的字体名。如果这个字体类型名字没有包括空格,你也可以给这个字符串自身增加尺寸和样式:
"Times 10 bold"
"Helvetica 10 bold italic"
"Symbol 8"

在大部份Windows平台上存在如下有效的字体类名:
Arial (相 应 于 Helvetica), Courier New (Courier), Comic Sans MS, Fixedsys, MS Sans Serif, MS Serif, Symbol, System, Times New Roman (Times), 和 Verdana:
Tkinter类之窗口部件类

注意:如果这个字体类型名包含空格,你必须使用上面所描述的元组语法。

有效的样式有normal, bold, roman, italic, underline, and overstrike。

Tk8.0自动映射Courier, Helvetica, 和Times到所有平台上相应的本地字体类型名。此外,在Tk8.0下字体格式不会引起问题,如果Tk不能找出确切的匹配,它会试着找类似的字体,如果失败,Tk就使用特定平台的默认字体。

Tk4.2在Windows下同样支持这种字体描述。这儿有几个限制,包括字体类型名必须在平台上存在,并非这所有上面样式名都存在(或它们中的一些有不同的名字)。

2、字体名
此外,Tk8.0允许你去创建已命名的字体并且当为一个窗口部件指定字体时使用它们的名字。

tkFont模块提供一个Font类,这个类允许你去创建字体实例。你可以随处使用这样一个实例。你也可能使用一个字体实例来得到字体的量度,包括存在于那个字体中的字符串所站用的尺寸。

tkFont.Font(family="Times", size=10, weight=tkFont.BOLD)
tkFont.Font(family="Helvetica", size=10, weight=tkFont.BOLD,
slant=tkFont.ITALIC)
tkFont.Font(family="Symbol", size=8)

如果你修改一个已命名的字体(使用config方法),这个改变将自动影响到所有使用这个字体的窗口部件。

Font构造器支持下列的样式选项(注意常量被定义在tkFont模块中):

样式选项及说明:

family选项
类型:字符串
说明:字体类型

size选项
类型:整型
说明:以磅为单位的字体的尺寸。要以象素为单位的话,使用负值。

weight选项
类型:常量
说明:字体的粗细。使用NORMAL或BOLD。默认为NORMAL。

slant选项
类型:常量
说明:字体倾斜。使用NORMAL或ITALIC。默认为NORMAL。

underline选项
类型:标志
说明:字体下划线。如果1(true),字体加下划线。默认为0(false)。

overstrike选项
类型:标志
说明:字体划线。如果为1(true),则字体上有一条线;默认为0(false)。

3、系统字体

Tk也支持特定系统的字体名。在X下,这些通常是字体别名如fixed,6x10等等。

在Windows下,这些包括ansi,ansifixed,device,oemfixed,system和systemfixed:
Tkinter类之窗口部件类

在Macintosh上,系统字体名是application和system。

注意:系统字体是字体名,不是字体类型名,它们不能与尺寸或样式属性结合。为了可移植性,尽可能避免使用这些名字。

4、X字体描述

X字体描述是如下格式的字符串(星号所代表的是无关字段。具体细节可查看Tk文档或X手册):
-*-family-weight-slant-*--*-size-*-*-*-*-charset

典型的字体类别如:Times, Helvetica, Courier or Symbol。

weight可以是"Bold"或"Normal"。slant取值中R代表"roman"(正常),I代表"italic",o代表团"oblique"(实际上等同于italic)。

size是字体的高度,以十分之一磅为单位。一英寸72磅,但是一些低分辩率的显示器的1磅较常规的大些,以便小字体能够清晰显示。charset(字符集)通常是ISO8859-1 (ISO Latin 1), 但一些字体也使用其它的值。

下面的描述的family取值是Times,weight取值是Bold,slant取值是R,size取值是120,charset取值是ISO8859-1:
-*-Times-Bold-R-*--*-120-*-*-*-*-ISO8859-1

如果你不关心charset(字符集),或你使用如Symbol的字体(这种字体类别有特定的字符集),那么你可以使用一个星号作为描述的最后部分:
-*-Symbol-*-*-*--*-80-*

典 型的X server至少支持Times, Helvetica, Courier等字体,size有8, 10, 12, 14, 18, 和 24 磅,weight有normal,bold、italic(Times)或oblique(Helvetica, Courier)。大多数的服务器都有 支持随意查看字体。你可以使用如xlsfonts和xfontsel来检查你所访问的服务器的字体。

这种类型的字体描述可以用在Windows 和Macintosh上。注意:如果你使用Tk4.2,你必须牢记字体类型必须是Windows所支持的一种。

控件详细介绍,tkinter控件 Tkinter 控件详细介绍 1.Button 按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作...

目录:
1、简单实例
2、Label控件
3、Button控件
4、Entry控件
5、点击按钮输出输入框中的内容
6、Text控件
7、带滚动条的Text
8、Checkbutton多选框控件
9、Radiobutton单选框
10、Listbox控件一
11、Listbox控件二
12、Listbox控件三
13、Listbox四
14、Scale控件
15、Spinbox控件
16、Menu顶层菜单
17、Menu鼠标右键菜单
18、Combobox下拉控件
19、Frame控件
20、表格数据
21、树状数据
22、绝对布局
23、相对布局
24、表格布局
25、鼠标点击事件
26、鼠标移动事件
27、鼠标释放事件
28、进入和离开事件
29、响应所有按键的事件
30、响应特殊按键事件
31、指定按键事件
32、组合按键事件

阅读目录

Tkinter:Tkinter的是Tk的GUI工具包,与Python附带的Python接口。在本教程中我们将看看这个选项.

澳门新濠3559 1

  • 1. 产品介绍
  • 2. 设计规划
    1. 相关知识
    1. 源码附件

wxPython:这是一个开源的Python接口的wxWindowshttp://wxpython.org.

1、简单实例

  下面的代码是创建出一个窗口,其他的操作就在这个平台上进行。执行之后会在桌面弹出一个窗口,窗口的标题就是代码中设置的win.title。这里说一下,我使用的版本是python3.6。后面的内容尽量按顺序看,后面的控件也许用到前面写到的东西。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tkinter
 5 
 6 
 7 # 创建主窗口
 8 win = tkinter.Tk()
 9 # 设置标题
10 win.title("yudanqu")
11 # 设置大小和位置
12 win.geometry("400x400+200+50")
13 
14 # 进入消息循环,可以写控件
15 
16 win.mainloop()

Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用。

JPython:JPython的是一个用于Java的Python端口,

2、Label控件

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tkinter
 5 
 6 win = tkinter.Tk()
 7 win.title("yudanqu")
 8 win.geometry("400x400+200+50")
 9 
10 '''
11 Label:标签控件,可以显示文本
12 '''
13 # win:父窗体
14 # text:显示的文本内容
15 # bg:背景色
16 # fg:字体颜色
17 # font:字体
18 # wraplength:指定text文本中多宽之后换行
19 # justify:设置换行后的对齐方式
20 # anchor:位置 n北,e东,w西,s南,center居中;还可以写在一起:ne东北方向
21 label = tkinter.Label(win,
22                       text="this is a word",
23                       bg="pink", fg="red",
24                       font=("黑体", 20),
25                       width=20,
26                       height=10,
27                       wraplength=100,
28                       justify="left",
29                       anchor="ne")
30 
31 # 显示出来
32 label.pack()
33 
34 
35 win.mainloop()

作为实践, 用Tkinter做了个ascii码转化查询表

这使得Python脚本在本地机器上的无缝接入到Java类库http://www.jython.org.

3、Button控件

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tkinter
 5 
 6 
 7 def func():
 8     print("aaaaaaaaaaaaaaaaaaaaaaa")
 9 
10 
11 win = tkinter.Tk()
12 win.title("yudanqu")
13 win.geometry("400x400+200+50")
14 
15 
16 # 创建按钮
17 button1 = tkinter.Button(win, text="按钮", command=func, width=10, height=10)
18 button1.pack()
19 
20 button2 = tkinter.Button(win, text="按钮", command=lambda: print("bbbbbbbbbbbb"))
21 button2.pack()
22 
23 button3 = tkinter.Button(win, text="退出", command=win.quit)
24 button3.pack()
25 
26 win.mainloop()

 

有很多可用它,我这里没有列出的其他接口。您可以通过网络找到它们.

4、Entry控件

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tkinter
 5 
 6 win = tkinter.Tk()
 7 win.title("yudanqu")
 8 win.geometry("400x400+200+50")
 9 
10 '''
11 Entry:输入控件,用于显示简单的文本内容
12 '''
13 
14 # 密文显示
15 entry1 = tkinter.Entry(win, show="*") # show="*" 可以表示输入密码
16 entry1.pack()
17 
18 # 绑定变量
19 e = tkinter.Variable()
20 
21 entry2 = tkinter.Entry(win, textvariable=e)
22 entry2.pack()
23 
24 # e就代表输入框这个对象
25 # 设置值
26 e.set("wewewewewewe")
27 # 取值
28 print(e.get())
29 print(entry2.get())
30 
31 win.mainloop()

1. 产品介绍

界面

  澳门新濠3559 2

功能

  • 通过输入字符或数字查询对应的信息
  • 通过选择列表中的信息查询对应的信息

回到顶部

Tkinter 编程:

5、点击按钮输出输入框中的内容

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import tkinter
 4 
 5 win = tkinter.Tk()
 6 win.title("yudanqu")
 7 win.geometry("400x400+200+50")
 8 
 9 def showinfo():
10     # 获取输入的内容
11     print(entry.get())
12 
13 entry = tkinter.Entry(win)
14 entry.pack()
15 
16 button = tkinter.Button(win, text="按钮", command=showinfo)
17 button.pack()
18 
19 win.mainloop()

2. 设计规划

规划图

澳门新濠3559 3

回到顶部

TkInter是标准的Python GUI库。的Python与Tkinter的结合提供了一个快速和容易的方法来创建GUI应用程序。 Tkinter的提供了一个强大的面向对象的接口Tk的GUI工具包.

6、Text控件

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import tkinter
 4 
 5 win = tkinter.Tk()
 6 win.title("yudanqu")
 7 win.geometry("400x400+200+50")
 8 
 9 '''
10 文本控件:用于显示多行文本
11 '''
12 
13 # height表示的是显示的行数
14 text = tkinter.Text(win, width=30, height=10)
15 text.pack()
16 
17 str = '''盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。'''
18 
19 text.insert(tkinter.INSERT, str)
20 
21 win.mainloop()

3. 相关知识

首先看怎么产生第一个窗口

from Tkinter import *   #引用Tk模块
root = Tk()             #初始化Tk()
root.mainloop()         #进入消息循环

几个常用属性

  • title: 设置窗口标题
  • geometry: 设置窗口大小
  • resizable():设置窗口是否可以变化长 宽

澳门新濠3559 4

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('200x100')                 #是x 不是*
root.resizable(width=False, height=True) #宽不可变, 高可变,默认为True
root.mainloop()

澳门新濠3559 5

介绍以下几个控件的用法

  • Label
  • Frame
  • Entry
  • 澳门新濠3559,Text
  • Button
  • Listbox
  • Scrollbar

说明每个控件最后要加上pack().否则控件是无法显示的.

3.1 Label

说明

  标签

用法

  Label(根对象, [属性列表])

属性

  • text    要现实的文本
  • bg    背景颜色
  • font    字体(颜色, 大小)
  • width  控件宽度
  • height 控件高度

  以下介绍的控件差不多都有这几个属性, 更详细的属性查看参考网页

举例

澳门新濠3559 6

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('300x200')
l = Label(root, text="show", bg="green", font=("Arial", 12), width=5, height=2)
l.pack(side=LEFT)  #这里的side可以赋值为LEFT  RTGHT TOP  BOTTOM
root.mainloop()

澳门新濠3559 7

效果

  澳门新濠3559 8

3.2 Frame

说明

  在屏幕上创建一块矩形区域,多作为容器来布局窗体

用法

  Frame(根对象, [属性列表])

举例

     要在控件中出现这样的四个词语

                 校训

          厚德        敬业

          博学        乐群     

  可以规划为         

    澳门新濠3559 9

澳门新濠3559 10

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('300x200')

Label(root, text='校训'.decode('gbk').encode('utf8'), font=('Arial', 20)).pack()

frm = Frame(root)
#left
frm_L = Frame(frm)
Label(frm_L, text='厚德'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
Label(frm_L, text='博学'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
frm_L.pack(side=LEFT)

#right
frm_R = Frame(frm)
Label(frm_R, text='敬业'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
Label(frm_R, text='乐群'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
frm_R.pack(side=RIGHT)

frm.pack()

root.mainloop()

澳门新濠3559 11

效果

  澳门新濠3559 12

 

3.3 Entry

说明

  创建单行文本框

用法

  •   创建:lb =Entry(根对象, [属性列表])
  •   绑定变量 var=StringVar()    lb=Entry(根对象, textvariable = var)
  •   获取文本框中的值   var.get()
  •   设置文本框中的值   var.set(item1)

举例

澳门新濠3559 13

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()
var = StringVar()
e = Entry(root, textvariable = var)
var.set("hello")
e.pack()

root.mainloop()

澳门新濠3559 14

效果

  澳门新濠3559 15

3.4 Text

说明

  向该空间内输入文本

用法

  t = Text(根对象)

  插入:t.insert(mark, 内容)

  删除:t.delete(mark1, mark2)

  其中,mark可以是行号,或者特殊标识,例如

  • INSERT:光标的插入点CURRENT:鼠标的当前位置所对应的字符位置
  • END:这个Textbuffer的最后一个字符
  • SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
  • SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发 异常

举例

澳门新濠3559 16

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('300x200')

t = Text(root)
t.insert(1.0, 'hellon')
t.insert(END, 'hello000000n')
t.insert(END, 'nono')
t.pack()

root.mainloop()

澳门新濠3559 17

效果

  澳门新濠3559 18

3.5 Button

说明

  创建按钮

用法

  Button(根对象, [属性列表])

举例

澳门新濠3559 19

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()

def printhello():
    t.insert('1.0', "hellon")

t = Text()
t.pack()
Button(root, text="press", command = printhello).pack()
root.mainloop()

澳门新濠3559 20

效果

  澳门新濠3559 21

3.6 Listbox

说明

  列表控件,可以含有一个或多个文本想,可单选也可多选

用法

  •   创建:lb = ListBox(根对象, [属性列表])
  •   绑定变量 var=StringVar()    lb=ListBox(根对象, listvariable = var)
  •   得到列表中的所有值   var.get()
  •   设置列表中的所有值   var.set((item1, item2, .....))
  •   添加:lb.insert(item)
  •   删除:lb.delete(item,...)
  •   绑定事件 lb.bind('<ButtonRelease-1>', 函数)
  •   获得所选中的选项 lbl.get(lb.curselection())

属性

  selectmode可以为BROWSE MULTIPL SINGLE

举例

澳门新濠3559 22

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()

def print_item(event):
    print lb.get(lb.curselection())

var = StringVar()
lb = Listbox(root,  listvariable = var)
list_item = [1, 2, 3, 4]         #控件的内容为1 2 3 4
for item in list_item:
    lb.insert(END, item)
lb.delete(2, 4)                  #此时控件的内容为1 3

var.set(('a', 'ab', 'c', 'd'))   #重新设置了,这时控件的内容就编程var的内容了
print var.get()
lb.bind('<ButtonRelease-1>', print_item)
lb.pack()

root.mainloop()

澳门新濠3559 23

效果

  澳门新濠3559 24

3.7 Scrollbar

说明

  在屏幕上创建一块矩形区域,多作为容器来布局窗体

用法

  Frame(根对象, [属性列表]), 最长用的用法是和别的控件一起使用.

举例

澳门新濠3559 25

from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()

def print_item(event):
    print lb.get(lb.curselection())

var = StringVar()
lb = Listbox(root, height=5, selectmode=BROWSE, listvariable = var)
lb.bind('<ButtonRelease-1>', print_item)
list_item = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
for item in list_item:
    lb.insert(END, item)

scrl = Scrollbar(root)
scrl.pack(side=RIGHT, fill=Y)
lb.configure(yscrollcommand = scrl.set)
lb.pack(side=LEFT, fill=BOTH)
scrl['command'] = lb.yview

root.mainloop()

澳门新濠3559 26

效果

  澳门新濠3559 27

使用Tkinter创建一个GUI应用程序是一件容易的事。所有你需要做的是执行以下步骤:

7、带滚动条的Text

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 
 5 import tkinter
 6 
 7 win = tkinter.Tk()
 8 win.title("yudanqu")
 9 # win.geometry("400x400+200+50")
10 
11 '''
12 文本控件:用于显示多行文本
13 '''
14 
15 # 创建滚动条
16 scroll = tkinter.Scrollbar()
17 
18 text = tkinter.Text(win, width=30, height=10)
19 # side放到窗体的哪一侧,  fill填充
20 scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
21 text.pack(side=tkinter.LEFT, fill=tkinter.Y)
22 # 关联
23 scroll.config(command=text.yview)
24 text.config(yscrollcommand=scroll.set)
25 
26 text.pack()
27 
28 str = '''盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。'''
29 
30 text.insert(tkinter.INSERT, str)
31 
32 win.mainloop()

4. 源码附件

代码

# -*- coding:cp936 -*-
from Tkinter import *

class show:
    num_info_hash = {}
    char_info_hash = {}
    num_char = {}
    char_num = {}
    def __init__(self):

        self.root = Tk()
        self.root.title("ASCII码查询".decode('gbk').encode('utf8'))
        #self.root.geometry('470x320')
        ########
        self.frm = Frame(self.root)
        #Top
        Label(self.root, text="ASCII码查询".decode('gbk').encode('utf8'), font=('Arial', 15)).pack()
        self.load_sys()
        self.frm = Frame(self.root)
        #Left
        self.frm_L = Frame(self.frm)
        self.frm_LT = Frame(self.frm_L)
        self.var_char = StringVar()
        Entry(self.frm_LT, textvariable=self.var_char, width = 5, font =('Verdana',15)).pack(side=RIGHT)
        Label(self.frm_LT, text = '字符'.decode('gbk').encode('utf8'), font =('Arial',12)).pack(side=LEFT)
        self.frm_LT.pack()

        self.var_L_char = StringVar()
        self.lb_char = Listbox(self.frm_L, selectmode=BROWSE, listvariable=self.var_L_char, font =('Verdana',12), width=10, height=13)
        self.lb_char.bind('<ButtonRelease-1>', self.get_char)
        for key in self.char_num:
            self.lb_char.insert(END, key[0])
        self.scrl_char = Scrollbar(self.frm_L)
        self.scrl_char.pack(side=RIGHT, fill=Y)
        self.lb_char.configure(yscrollcommand = self.scrl_char.set)
        self.lb_char.pack(side=LEFT, fill=BOTH)
        self.scrl_char['command'] = self.lb_char.yview

        self.frm_L.pack(side = LEFT)

        #Mid
        self.frm_M = Frame(self.frm)
        self.t_show = Text(self.frm_M, width=20, height=5, font =('Verdana',15))
        self.t_show.insert('1.0', '')
        self.t_show.pack()

        self.frm_MB = Frame(self.frm_M)
        Button(self.frm_MB, text="清除".decode('gbk').encode('utf-8'), command=self.clear, width=6, height=1, font=('Arial', 10)).pack(side=LEFT)
        Button(self.frm_MB, text="查询".decode('gbk').encode('utf-8'), command=self.search, width=6, height=1, font=('Arial', 10)).pack(side=RIGHT)
        self.frm_MB.pack(side=BOTTOM)

        self.frm_M.pack(side=LEFT)

        #Right
        self.frm_R = Frame(self.frm)
        self.frm_RT = Frame(self.frm_R)
        self.var_int = StringVar()
        Entry(self.frm_RT, textvariable=self.var_int, width=5, font =('Verdana',15)).pack(side=LEFT)
        Label(self.frm_RT, text='十进制'.decode('gbk').encode('utf-8'), font =('Arial',12)).pack(side=RIGHT)
        self.frm_RT.pack()
        self.var_R_int = StringVar()
        self.lb_int = Listbox(self.frm_R, selectmode=BROWSE, listvariable=self.var_R_int, font =('Verdana',12), width=10, height=13)
        self.lb_int.bind('<ButtonRelease-1>', self.get_int,)
        for key in self.num_char:
            self.lb_int.insert(END, key[0])
        self.scrl_int = Scrollbar(self.frm_R)
        self.scrl_int.pack(side=RIGHT, fill=Y)
        self.lb_int.configure(yscrollcommand = self.scrl_int.set)
        self.lb_int.pack(side=LEFT, fill=BOTH)
        self.scrl_int['command'] = self.lb_int.yview

        self.frm_R.pack(side = LEFT)

        self.frm.pack()
        ########


    def get_char(self, event):
        self.var_char.set('')
        self.var_int.set('')
        tmp = self.lb_char.get(self.lb_char.curselection())
        self.var_char.set(tmp)
    def get_int(self, event):
        self.var_int.set('')
        self.var_char.set('')
        tmp = self.lb_int.get(self.lb_int.curselection())
        self.var_int.set(tmp)
    def clear(self):
        self.var_char.set('')
        self.var_int.set('')
        self.t_show.delete('1.0', '10.0')
    def search(self):
        self.t_show.delete('1.0', '100.0')
        tmp_char = self.var_char.get()
        tmp_int = self.var_int.get()
        if tmp_char != '':
            if not self.char_info_hash.has_key(tmp_char):
                self.t_show.insert('1.0', "您输入的字符不在128个字符之内".decode('gbk').encode('utf8'))
            else:
                self.t_show.insert('1.0', '十六进制:'.decode('gbk').encode('utf8') + 't' + self.char_info_hash[tmp_char][2] + 'n')
                self.t_show.insert('1.0', '十进制:'.decode('gbk').encode('utf8') +'t' + self.char_info_hash[tmp_char][1] + 'n')
                self.t_show.insert('1.0', '八进制:'.decode('gbk').encode('utf8') + 't' + self.char_info_hash[tmp_char][0] + 'n')
                self.t_show.insert('1.0', '字符:'.decode('gbk').encode('utf8') +'t' + tmp_char + 'nn')
            self.var_char.set('')
            self.var_int.set('')
        elif tmp_int !='':
            if not self.num_info_hash.has_key(tmp_int):
                self.t_show.insert('1.0', "请输入介于0~127之间的整数".decode('gbk').encode('utf8'))
            else:
                self.t_show.insert('1.0', '字符:'.decode('gbk').encode('utf8') +'t' + self.num_info_hash[tmp_int][2] + 'n')
                self.t_show.insert('1.0', '十六进制:'.decode('gbk').encode('utf8') + 't' + self.num_info_hash[tmp_int][1] + 'n')
                self.t_show.insert('1.0', '八进制:'.decode('gbk').encode('utf8') + 't' + self.num_info_hash[tmp_int][0] + 'n')
                self.t_show.insert('1.0', '十进制:'.decode('gbk').encode('utf8') + 't' + tmp_int + 'nn')
            self.var_char.set('')
            self.var_int.set('')
        else:
            self.t_show.insert('1.0', '请选择或输入'.decode('gbk').encode('utf8'))

    def load_sys(self):
        f = file('asc')
        for line in f:
            chunk = line.strip().split('t')
            self.num_char[int(chunk[1])] = chunk[3]
            self.char_num[chunk[3]] = int(chunk[1])
            self.num_info_hash[chunk[1]] = [chunk[0], chunk[2], chunk[3]]
            self.char_info_hash[chunk[3]] = [chunk[0], chunk[1], chunk[2]]

        self.num_char =sorted(self.num_char.iteritems(), key = lambda asd:asd[0])
        self.char_num =sorted(self.char_num.iteritems(), key = lambda asd:asd[1])




def main():
    d = show()
    mainloop()
if __name__== "__main__":
    main()

文本

0    00    nul
   1    01    soh
   2    02    stx
   3    03    etx
   4    04    eot
   5    05    enq
   6    06    ack
   7    07    bel
   8    08    bs
   9    09    ht
   10    0a    nl
   11    0b    vt
   12    0c    ff
   13    0d    er
   14    0e    so
   15    0f    si
   16    10    dle
   17    11    dc1
   18    12    dc2
   19    13    dc3
   20    14    dc4
   21    15    nak
   22    16    syn
   23    17    etb
   24    18    can
   25    19    em
   26    1a    sub
   27    1b    esc
   28    1c    fs
   29    1d    gs
   30    1e    re
   31    1f    us
   32    20    sp
   33    21    !
   34    22    "
   35    23    #
   36    24    $
   37    25    %
   38    26    &amp;
   39    27    `
   40    28    (
   41    29    )
   42    2a    *
   43    2b    +
   44    2c    ,
   45    2d    -
   46    2e    .
   47    2f    /
   48    30    0
   49    31    1
   50    32    2
   51    33    3
   52    34    4
   53    35    5
   54    36    6
   55    37    7
   56    38    8
   57    39    9
   58    3a    :
   59    3b    ;
   60    3c    &lt;
   61    3d    =
   62    3e    &gt;
   63    3f    ?
   64    40    @
   65    41    A
   66    42    B
   67    43    C
   68    44    D
   69    45    E
   70    46    F
   71    47    G
   72    48    H
   73    49    I
   74    4a    J
   75    4b    K
   76    4c    L
   77    4d    M
   78    4e    N
   79    4f    O
   80    50    P
   81    51    Q
   82    52    R
   83    53    S
   84    54    T
   85    55    U
   86    56    V
   87    57    W
   88    58    X
   89    59    Y
   90    5a    Z
   91    5b    [
   92    5c    
   93    5d    ]
   94    5e    ^
   95    5f    _
   96    60    '
   97    61    a
   98    62    b
   99    63    c
   100    64    d
   101    65    e
   102    66    f
   103    67    g
   104    68    h
   105    69    i
   106    6a    j
   107    6b    k
   108    6c    l
   109    6d    m
   110    6e    n
   111    6f    o
   112    70    p
   113    71    q
   114    72    r
   115    73    s
   116    74    t
   117    75    u
   118    76    v
   119    77    w
   120    78    x
   121    79    y
   122    7a    z
   123    7b    {
   124    7c    |
   125    7d    }
   126    7e    ~
   127    7f    del

Python Tkinter参考资料之(通用控件属性)

导入Tkinter模块.

8、Checkbutton多选框控件

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import tkinter
 4 
 5 win = tkinter.Tk()
 6 win.title("yudanqu")
 7 win.geometry("400x400+200+50")
 8 
 9 def updata():
10     message = ""
11     if hobby1.get() ==True:
12         message += "moneyn"
13     if hobby2.get() == True:
14         message += "powern"
15     if hobby3.get() == True:
16         message += "peoplen"
17 
18     # 清空text中所有内容
19     text.delete(0.0, tkinter.END)
20     text.insert(tkinter.INSERT, message)
21 
22 # 要绑定的变量
23 hobby1 = tkinter.BooleanVar()
24 # 多选框
25 check1 = tkinter.Checkbutton(win, text="money", variable=hobby1, command=updata)
26 check1.pack()
27 hobby2 = tkinter.BooleanVar()
28 check2 = tkinter.Checkbutton(win, text="power", variable=hobby2, command=updata)
29 check2.pack()
30 hobby3 = tkinter.BooleanVar()
31 check3 = tkinter.Checkbutton(win, text="people", variable=hobby3, command=updata)
32 check3.pack()
33 
34 text = tkinter.Text(win, width=50, height=5)
35 text.pack()
36 
37 win.mainloop()

 大部分控件的共享选项:

选项(别名)

说明

单位

典型值

没有此属性的控件

background(bg)

当控件显示时,给出的正常颜色

color

'gray25'
'#ff4400'
 

borderwidth(bd)

设置一个非负值,该值显示画控件外围3D边界的宽度;(特别的由relief选项决定这项决定).控件内部的3D效果也可以使用该值,该值可以是Tkinter(Tk_GetPixels)接受的任何格式 

pixel

3  

cursor

指定控件使用的鼠标光标,该值可以是Tkinter(Tk_GetPixels)接受的任何格式

cursor

gumby  

font

指定控件内部文本的字体

font

 'Helvetica'
('Verdana',8)
Canvas Frame
Scrollbar
Toplevel 

foreground(fg)

 指定控件的前景色 color  'black'
'#ff2244'
Canvas Frame
Scrollbar
Toplevel 

highlightbackground

指出经过没有输入焦点的控件加亮区域颜色  color 'gray30' Menu 

highlightcolor

指出经过没有输入焦点的控件周围长方区域加亮颜色  color  'royalblue'  Menu 

highlightthickness

设置一个非负值,该值指出一个有输入焦点的控件周围加亮方形区域的宽度,该值可以是 Tk_GetCursor)接受的任何格式.如果为0,则不画加亮区域 pixel  2.1m  Menu 

relief

指出控件3D效果.可选值为RAISED,SUNKEN,FLAT,RIDGE,SOLID,GROOVE.该值指出控件内部相对于外部的外观样式,比如RAISED意味着控件内部相对于外部突出  constant  RAISED
GROOVE 
 

takefocus

决定窗口在键盘遍历时是否接收焦点(比如Tab,shift-Tab).在设定焦点到一个窗口之前,遍历脚本检查takefocus选项的值,值0意味着键盘遍历时完全跳过,值1意味着只要有输入焦点(它及所有父代都映射过)就接收.空值由脚本自己觉定是否接收,当前的算法是如果窗口被禁止,或者没有键盘捆绑或窗口不可见时,跳过  boolean  1 YES   

width

指定一个整数,设置控件宽度,控件字体的平局字符数.如果值小于等于0,控件选择一个能够容纳目前字符的宽度

integer

32

Menu

创建GUI应用程序的主窗口.

9、Radiobutton单选框

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 def updata():
 8     print(r.get())
 9 
10 # 绑定变量,一组单选框要绑定同一个变量,就能区分出单选框了
11 r = tkinter.IntVar()
12 
13 radio1 = tkinter.Radiobutton(win, text="one", value=1, variable=r, command=updata)
14 radio1.pack()
15 radio2 = tkinter.Radiobutton(win, text="two", value=2, variable=r, command=updata)
16 radio2.pack()
17 
18 win.mainloop()

  很多控件共享的选项:

 

选项(别名)

 

说明

 

单位

 

典型值

 

仅此类控件

activebackground 指定画活动元素的背景颜色.元素(控件或控件的一部分)在鼠标放在其上并按动鼠标按钮引起某些行为的发生时,是活动的.如果严格的Modf一致性请求通过设置tk_strictModf变量完成,该选项将被忽略,正常背景色将被使用.对Windows和Macintosh系统,活动颜色将只有在鼠标按钮1被按过元素时使用  color 'red'
'#fa07a3'
Button
Checkbutton
Menu
Menubutton
Radiobutton
Scale
Scrollbar
activeforeground 指定画活动元素时的前景颜色.参见上面关于活动元素的定义   color 'cadeblue' Button
Menu
Checkbutton
Menubutton
Radiobutton 
anchor 指出控件信息(比如文本或者位图)如何在控件中显示.必须为下面值之一:
N,NE,E,SE,S,SW,W,NW或者CENTER.比如NW(NorthWest)指显示信息时使左上角在控件的左上端
 constant   Button
Checkbutton
Label
Message
Menubutton
Radiobutton 
bitmap  指定一个位图在控件中显示,以Tkinter(Tk_GetBitmap)接受的任何形式.位图显示的精确方式受其他选项如锚或对齐的影响.典型的,如果该选项被指定,它覆盖指定显示控件中文本的其他选;bitmap选项可以重设为空串以使文本能够被显示在控件上.在同时支持位图和图像的控件中,图像通常覆盖位图  bitmap   Button
Checkbutton
Label
Menubutton
Radiobutton
command  指定一个与控件关联的命令.该命令通常在鼠标离开控件之时被调用,对于单选按钮和多选按钮,tkinter变量(通过变量选项设置)将在命令调用时更新   command  setupData  Button
Checkbutton
Radiobutton
Scale
Scrollbar 
disabledforeground 指定绘画元素时的前景色.如果选项为空串(单色显示器通常这样设置),禁止的元素用通常的前景色画,但是采用点刻法填充模糊化   color  'gray50' 

Button
Checkbutton
Radiobutton
Menu
Menubutton

height 指定窗口的高度,采用字体选项中给定字体的字符高度为单位,至少为1   integer 1  4  Button
Canvas
Frame
Label
Listbox
Checkbutton
Radiobutton
Menubutton
Text
Toplevel 
image  指定所在控件中显示的图像,必须是用图像create方法产生的.如果图像选项设定,它覆盖已经设置的位图或文本显示;更新恢复位图或文本的显示需要设置图像选项为空串    image   Button
Checkbutton
Label
Menubutton
Radiobutton 
justify 当控件中显示多行文本的时候,该选项设置不同行之间是如何排列的,其值为如下之一:
LEFT,CENTER或RIGHT.LEFT指每行向左对齐,CENTER指每行居中对齐,RIGHT指向右对齐 
 constant  RIGHT  Button
Checkbutton
Entry
Label
Menubutton
Message
Radiobutton 
padx  指定一个非负值设置控件X方向需要的边距.该值为Tkinter(Tk_GetPixels)接受的格式.当计算需要多大的窗口时,控件会把此值加到正常大小之上(由控件中显示内容决定);如果几何管理器能够满足此请求,控件将在左端或右端得到一个给定的多余空边.大部分控件只用此项于文本,如果它们显示位图或图像,通常忽略空边选项   pixels 2m  10  Button
Checkbutton
Label
Menubutton
Message
Radiobutton
Text 
pady  指定一个非负值设置控件Y方向需要的边距.该值为Tkinter(Tk_GetPixels)接受的格式.当计算需要多大的窗口时,控件会把此值加到正常大小之上(由控件中显示内容决定);如果几何管理器能够满足此请求,控件将在上端或下端得到一个给定的多余空边.大部分控件只用此项于文本,如果它们显示位 图或图像,通常忽略空边选项   pixels 12  3m  Button
Checkbutton
Label
Menubutton
Message
Radiobutton
Text 
selectbackground  指定显示选中项时的背景颜色   color  blue  Canvas
Listbox
Entry
Text 
selectborderwidth  指定一个非负值,给出选中项的三维边界宽度,值可以是任何
Tkinter(Tk_GetPixels)接受的格式 
 pixel

Canvas
Entry
Listbox
Text 

selectforeground 指定显示选中项的前景颜色   color yellow  Canvas
Entry
Listbox
Text 
state 

指定控件下列两三个状态之一(典型是复选按钮):
NORMAL和DISABLED或NORMAL,ACTIVE和NORMAL.在NORMAL状态,控件有前景色和背景显示;在ACTIVE状态,控件按activeforeground和activebackground选项显示;在DISABLED状态下,控件不敏感,缺省捆绑将拒绝激活控件,并忽略鼠标行为,此时,由disabled foreground和background选项决定如何显示 

 constant ACTIVE 

Button
Checkbutton
Entry
Menubutton
Scale
Radiobutton
Text 

text  指定控件中显示的文本,文本显示格式由特定控件和其他诸如锚和对齐选项决定   string 'Display'  Button
Checkbutton
Label
Menubutton
Message
Radiobutton 
textvariable  指定一个变量名字.变量值被转变为字符串在控件上显示.如果变量值改变,控件将自动更新以反映新值,字符串显示格式由特定控件和其他诸如锚和对齐选项决定   variable widgetConstant  Button
Checkbutton
Entry
Label
Menubutton
Message
Radiobutton 
underline  指定控件中加入下划线字符的整数索引.此选项完成菜单按钮与菜单输入的键盘遍历缺省捆绑.0对应控件中显示的第一个字符,1对应第二个,以此类推   integer Button
CheckButton
Label
Menubutton
Radiobutton 
wraplength  对于能够支持字符换行的控件,该选项指定行的最大字符数,超过最大字符数的行将转到下行显示,这样一行不会超过最大字符数.该值可以是窗口距离的任何标准格式.如果该值小于或等于0,不换行,换行只有在文本中的换行符的地方才出现   pixel 41,65  Button
Checkbutton
Label
Menubutton
Radiobutton
xscrollcommand  指定一个用来与水平滚动框进行信息交流的命令前缀,当控件窗口视图改变(或者别的任何滚动条显示的改变,如控件的总尺寸改变等等),控件将通过把滚动命令和两个数连接起来产生一个命令.两个数分别为0到1之间的分数,代表文档中的一个位置,0表示文档的开头,1.0表示文档的结尾处,0.333表示整个文档的三分之一处,如此等等.第一个分数代表窗口中第一个可见文档信息,第二个分数代表紧跟上一个可见部分之后的信息.然后命令把它们传到Tcl解释器执行.
典型的,xscrollcommand选项由滚动条标识跟着set组成,如set.x.scrollbar set将引起滚动条在窗口中视图变化时被更新.如果此项没有指定,不执行命令 
 function   Canvas
Entry
Listbox
Text 
yscrollcommand  指定一个用来与垂直滚动框进行信息交流的命令前缀,当控件窗口视图改变(或者别的任何滚动条显示的改变,如控件的总尺寸改变等等),控件将通过把滚动命令和两个数连接起来产生一个命令.两个数分别为0到1之间的分数,代表文档中的一个位置,0表示文档的开头,1.0表示文档的结尾处,0.333表示整个文档的三分之一处,如此等等.第一个分数代表窗口中第一个可见文档信息,第二个分数代表紧跟上一个可见部分之后的信息.然后命令把它们传到Tcl解释器执行.
典型的,yscrollcommand选项由滚动条标识跟着set组成,如set.y.scrollbar set将引起滚动条在窗口中视图变化时被更新.如果此项没有指定,不执行命令 
 function   Canvas
Entry
Listbox
Text

添加上述部件之一或更多的GUI应用程序.

10、Listbox控件一

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import tkinter
 4 
 5 win = tkinter.Tk()
 6 win.title("yudanqu")
 7 win.geometry("400x400+200+50")
 8 
 9 '''
10 列表框控件:可以包含一个或多个文本框
11 作用:在listbox控件的小窗口显示一个字符串
12 '''
13 
14 # 创建一个listbox,添加几个元素
15 lb = tkinter.Listbox(win, selectmode=tkinter.BROWSE)
16 lb.pack()
17 
18 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
19     # 按顺序添加
20     lb.insert(tkinter.END, item)
21 
22 # 在开始添加
23 lb.insert(tkinter.ACTIVE, "cool")
24 
25 # 将列表当做一个元素添加
26 # lb.insert(tkinter.END, ["very good", "very nice"])
27 
28 # 删除:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容
29 lb.delete(1,3)
30 
31 # 选中:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只选中第一个索引处的内容
32 lb.select_set(2,3)
33 
34 # 取消选中:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只取消第一个索引处的内容
35 lb.select_clear(2)
36 
37 # 获取到列表中的元素个数
38 print(lb.size())
39 # 获取值
40 print(lb.get(2,3))
41 
42 # 返回当前的索引项,不是item元素
43 print(lb.curselection())
44 
45 # 判断:一个选项是否被选中
46 print(lb.selection_includes(3))
47 
48 win.mainloop()

 

进入主事件循环的由用户触发每个事件响应.

 11、Listbox控件二

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # 绑定变量
 8 lbv = tkinter.StringVar()
 9 
10 # 与BORWSE相似,但是不支持鼠标按下后移动选中位置
11 lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv)
12 lb.pack()
13 
14 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
15     # 按顺序添加
16     lb.insert(tkinter.END, item)
17 
18 # 打印当前列表中的选型
19 print(lbv.get())
20 
21 # 设置选项
22 # lbv.set(("1","2","3"))
23 
24 # 绑定事件
25 def myprint(event):
26     # print(lb.curselection()) # 返回下标
27     print(lb.get(lb.curselection())) # 返回值
28 lb.bind("<Double-Button-1>", myprint)
29 
30 win.mainloop()

资料来源——《Python与Tkinter编程》附录B

 

例子:

12、Listbox控件三

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 # win.geometry("400x400+200+50")
 6 
 7 # EXTENDED:可以使listbox支持shift和Ctrl
 8 lb = tkinter.Listbox(win, selectmode=tkinter.EXTENDED)
 9 lb.pack()
10 
11 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
12     # 按顺序添加
13     lb.insert(tkinter.END, item)
14 
15 # 滚动条
16 sc = tkinter.Scrollbar(win)
17 sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
18 # 配置
19 lb.configure(yscrollcommand=sc.set)
20 lb.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
21 # 额外给属性赋值
22 sc["command"] = lb.yview
23 
24 win.mainloop()

#!/usr/bin/python

13、Listbox四

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # MULTIPLE支持多选
 8 lb = tkinter.Listbox(win, selectmode=tkinter.MULTIPLE)
 9 lb.pack()
10 
11 for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
12     # 按顺序添加
13     lb.insert(tkinter.END, item)
14 
15 win.mainloop()

import Tkinter

14、Scale控件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 '''
 8 供用户通过拖拽指示器来改变变量的值,可以水平,也可以竖直
 9 '''
10 
11 # tkinter.HORIZONTAL水平
12 # tkinter.VERTICAL 竖直(默认)
13 # length:水平时表示宽度,竖直时表示高度
14 # tickintervar :选择值将会为该值得倍数
15 
16 scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200)
17 scale1.pack()
18 
19 # 设置值
20 scale1.set(20)
21 
22 # 取值
23 # print(scale1.get())
24 
25 def showNum():
26     print(scale1.get())
27 tkinter.Button(win, text="按钮", command=showNum).pack()
28 
29 win.mainloop()

top = Tkinter.Tk()

15、Spinbox控件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 '''
 8 数值范围控件
 9 '''
10 
11 # 绑定变量
12 v = tkinter.StringVar()
13 
14 def updata():
15     print(v.get())
16 
17 # increment:步长,默认为1
18 # values要输入一个元组 最好不要和from和to同时使用,而且步长也没用
19 # command 只要值改变就会执行updata方法
20 sp = tkinter.Spinbox(win, from_=0, to=100, increment=5,
21                      textvariable=v, command=updata)
22 # sp = tkinter.Spinbox(win, values=(0,2,4,6,8))
23 sp.pack()
24 
25 # 赋值
26 v.set(20)
27 # 取值
28 print(v.get())
29 
30 win.mainloop()

# Code to add widgets will go here...

16、Menu顶层菜单

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # 菜单条
 8 menubar = tkinter.Menu(win)
 9 win.config(menu=menubar)
10 
11 def func():
12     print("**********")
13 
14 # 创建一个菜单选项
15 menu1 = tkinter.Menu(menubar, tearoff=False)
16 
17 # 给菜单选项添加内容
18 for item in ['python','c','java','c++', 'c#','php','B','退出']:
19     if item == '退出':
20         # 添加分割线
21         menu1.add_separator()
22         menu1.add_command(label=item, command=win.quit)
23     else:
24         menu1.add_command(label=item, command=func)
25 
26 # 向菜单条上添加菜单选项
27 menubar.add_cascade(label='语言', menu=menu1)
28 
29 win.mainloop()

top.mainloop()

17、Menu鼠标右键菜单

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # 菜单条
 8 menubar = tkinter.Menu(win)
 9 
10 def func():
11     print("**********")
12 
13 # 菜单
14 menu = tkinter.Menu(menubar, tearoff=False)
15 # 给菜单选项添加内容
16 for item in ['python','c','java','c++', 'c#','php','B','退出']:
17     if item == '退出':
18         # 添加分割线
19         menu.add_separator()
20         menu.add_command(label=item, command=win.quit)
21     else:
22         menu.add_command(label=item, command=func)
23 
24 menubar.add_cascade(label="语言", menu=menu)
25 
26 def showMenu(event):
27     menubar.post(event.x_root, event.y_root)
28 
29 win.bind("<Button-3>", showMenu)
30 
31 win.mainloop()

这将创建一个下面的窗口:

18、Combobox下拉控件

 1 import tkinter
 2 from tkinter import ttk
 3 
 4 win = tkinter.Tk()
 5 win.title("yudanqu")
 6 win.geometry("400x400+200+50")
 7 
 8 # 绑定变量
 9 cv = tkinter.StringVar()
10 
11 com = ttk.Combobox(win, textvariable=cv)
12 com.pack()
13 
14 # 设置下拉数据
15 com["value"] = ("黑龙江", "吉林", "辽宁")
16 
17 # 设置默认值
18 com.current(0)
19 
20 # 绑定事件
21 
22 def func(event):
23     print(com.get())
24     print(cv.get())
25 com.bind("<<ComboboxSelected>>", func)
26 
27 win.mainloop()

澳门新濠3559 28

19、Frame控件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 '''
 8 框架控件:在桌面上显示一个矩形区域,多作为一个容器控件
 9 '''
10 
11 frm = tkinter.Frame(win)
12 frm.pack()
13 
14 # left
15 frm_l = tkinter.Frame(frm)
16 tkinter.Label(frm_l, text="左上", bg="pink").pack(side=tkinter.TOP)
17 tkinter.Label(frm_l, text="左下", bg="blue").pack(side=tkinter.TOP)
18 frm_l.pack(side=tkinter.LEFT)
19 
20 # right
21 frm_r = tkinter.Frame(frm)
22 tkinter.Label(frm_r, text="右上", bg="green").pack(side=tkinter.TOP)
23 tkinter.Label(frm_r, text="右下", bg="red").pack(side=tkinter.TOP)
24 frm_r.pack(side=tkinter.RIGHT)
25 
26 win.mainloop()

Tkinter的部件:

20、表格数据

 1 import tkinter
 2 from tkinter import ttk
 3 
 4 win = tkinter.Tk()
 5 win.title("yudanqu")
 6 win.geometry("600x400+200+50")
 7 
 8 # 表格
 9 tree = ttk.Treeview(win)
10 tree.pack()
11 
12 # 定义列
13 tree["columns"] = ("姓名","年龄","身高","体重")
14 # 设置列,列还不显示
15 tree.column("姓名", width=100)
16 tree.column("年龄", width=100)
17 tree.column("身高", width=100)
18 tree.column("体重", width=100)
19 
20 # 设置表头
21 tree.heading("姓名", text="姓名-name")
22 tree.heading("年龄", text="年龄-age")
23 tree.heading("身高", text="身高-height")
24 tree.heading("体重", text="体重-weight")
25 
26 # 添加数据
27 tree.insert("", 0, text="line1", values=("小郑","34","177cm","70kg"))
28 tree.insert("", 1, text="line2", values=("小张","43","188cm","90kg"))
29 
30 win.mainloop()

Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为部件.

21、树状数据

 1 import tkinter
 2 from tkinter import ttk
 3 
 4 win = tkinter.Tk()
 5 win.title("yudanqu")
 6 win.geometry("400x400+200+50")
 7 
 8 tree = ttk.Treeview(win)
 9 tree.pack()
10 
11 # 添加一级树枝
12 treeF1 = tree.insert("",0,"中国",text= "中国Chi", values=("F1"))
13 treeF2 = tree.insert("",1,"美国",text= "美国USA", values=("F1"))
14 treeF3 = tree.insert("",2,"英国",text= "英国UK", values=("F1"))
15 
16 # 二级树枝
17 treeF1_1 = tree.insert(treeF1,0,"黑龙江",text="中国黑龙江",values=("F1_1"))
18 treeF1_2 = tree.insert(treeF1,1,"吉林",text="中国吉林",values=("F1_2"))
19 treeF1_3 = tree.insert(treeF1,2,"辽宁",text="中国辽宁",values=("F1_3"))
20 
21 treeF2_1 = tree.insert(treeF2,0,"aaa",text="aaaa",values=("F2_1"))
22 treeF2_2 = tree.insert(treeF2,1,"bbb",text="bbbb",values=("F2_2"))
23 treeF2_3 = tree.insert(treeF2,2,"ccc",text="cccc",values=("F2_3"))
24 
25 # 三级树枝
26 treeF1_1_1 = tree.insert(treeF1_1,0,"哈尔滨",text="黑龙江哈尔滨")
27 treeF1_1_2 = tree.insert(treeF1_1,1,"五常",text="黑龙江五常")
28 
29 win.mainloop()

目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:

22、绝对布局

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 label1 = tkinter.Label(win, text="good", bg="blue")
 8 label2 = tkinter.Label(win, text="nice", bg="red")
 9 label3 = tkinter.Label(win, text="cool", bg="green")
10 
11 # 绝对布局,窗口的变化对位置没有影响
12 label1.place(x=10,y=10)
13 label2.place(x=50,y=50)
14 label3.place(x=100,y=100)
15 
16 win.mainloop()

OperatorDescription

23、相对布局

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 label1 = tkinter.Label(win, text="good", bg="blue")
 8 label2 = tkinter.Label(win, text="nice", bg="red")
 9 label3 = tkinter.Label(win, text="cool", bg="green")
10 
11 # 相对布局,窗体改变对控件有影响
12 label1.pack(fill=tkinter.Y, side=tkinter.LEFT)
13 label2.pack(fill=tkinter.X, side=tkinter.TOP)
14 label3.pack()
15 
16 win.mainloop()

Button  

24、表格布局

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 label1 = tkinter.Label(win, text="good", bg="blue")
 8 label2 = tkinter.Label(win, text="nice", bg="red")
 9 label3 = tkinter.Label(win, text="cool", bg="green")
10 label4 = tkinter.Label(win, text="handsome", bg="yellow")
11 
12 # 表格布局
13 label1.grid(row=0,column=0)
14 label2.grid(row=0,column=1)
15 label3.grid(row=1,column=0)
16 label4.grid(row=1,column=1)
17 
18 win.mainloop()

25、鼠标点击事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 
 8 def func(event):
 9     print(event.x, event.y)
10 
11 # <Button-1>  鼠标左键
12 # <Button-2>  鼠标滚轮
13 # <Button-1>  鼠标右键
14 # <Double-Button-1>  鼠标双击左键
15 # <Triple-Button-1>  鼠标三击左键
16 
17 button1 = tkinter.Button(win, text="leftmouse button")
18 # bind 给控件绑定数据(参数一是绑定的事件,参数二是触发事件的函数)
19 button1.bind("<Button-1>", func)
20 button1.pack()
21 
22 win.mainloop()

The Button widget is used to display buttons in your application.

26、鼠标移动事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 
 8 # <B1-Motion>  左键移动
 9 # <B2-Motion>  中键移动
10 # <B3-Motion>  右键移动
11 
12 
13 label = tkinter.Label(win, text="*********")
14 label.pack()
15 
16 def func(event):
17     print(event.x, event.y)
18 
19 label.bind("<B1-Motion>", func)
20 
21 win.mainloop()

Canvas

27、鼠标释放事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <ButtonRelease-1> 释放鼠标左键
 8 # <ButtonRelease-2> 释放鼠标中键
 9 # <ButtonRelease-3> 释放鼠标右键
10 
11 
12 label = tkinter.Label(win, text="*********", bg="red")
13 label.pack()
14 
15 def func(event):
16     print(event.x, event.y)
17 
18 label.bind("<ButtonRelease-1>", func)
19 
20 win.mainloop()

28、进入和离开事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <Enter>  当鼠标进入控件时触发事件
 8 # <Leave>  当鼠标离开控件时触发事件
 9 
10 label = tkinter.Label(win, text="*********", bg="red")
11 label.pack()
12 
13 def func(event):
14     print(event.x, event.y)
15 
16 label.bind("<Enter>", func)
17 label.bind("<Leave>", func)
18 
19 
20 win.mainloop()

The Canvas widget is used to draw shapes, such as lines, ovals, polygons, and rectangles, in your application.

29、响应所有按键的事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <Key>  响应所有的按键(要有焦点)
 8 
 9 label = tkinter.Label(win, text="*********", bg="red")
10 # 设置焦点
11 label.focus_set()
12 label.pack()
13 
14 def func(event):
15     print("event.char=", event.char)
16     print("event.keycode=", event.keycode)
17 
18 label.bind("<Key>", func)
19 
20 win.mainloop()

Checkbutton

30、响应特殊按键事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 # <Shift_L>  只响应左侧的shift键
 8 # <Shift_R>
 9 # <F5>
10 # <Return>  也就是回车键
11 # <BackSpace>  返回,也就是退格键
12 
13 label = tkinter.Label(win, text="*********", bg="red")
14 # 设置焦点
15 label.focus_set()
16 label.pack()
17 
18 def func(event):
19     print("event.char=", event.char)
20     print("event.keycode=", event.keycode)
21 
22 
23 label.bind("<Shift_L>", func)
24 
25 
26 win.mainloop()

31、指定按键事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 
 8 label = tkinter.Label(win, text="*********", bg="red")
 9 # 设置焦点
10 label.focus_set()
11 label.pack()
12 
13 def func(event):
14     print("event.char=", event.char)
15     print("event.keycode=", event.keycode)
16 
17 
18 win.bind("a", func) # 注意前面改成了win,只需要写出按键名即可
19 
20 
21 win.mainloop()

The Checkbutton widget is used to display a number of options as checkboxes. The user can select multiple options at a time.

32、组合按键事件

 1 import tkinter
 2 
 3 win = tkinter.Tk()
 4 win.title("yudanqu")
 5 win.geometry("400x400+200+50")
 6 
 7 
 8 # <Control-Alt-a>
 9 # <Shift-Up>
10 # 只是control+alt不行
11 
12 label = tkinter.Label(win, text="*********", bg="red")
13 # 设置焦点
14 label.focus_set()
15 label.pack()
16 
17 def func(event):
18     print("event.char=", event.char)
19     print("event.keycode=", event.keycode)
20 
21 
22 win.bind("<Control-Alt-a>", func) # 注意前面改成了win,只需要写出按键名即可
23 
24 
25 win.mainloop()

 

Entry


The Entry widget is used to display a single-line text field for accepting values from a user.

Frame


The Frame widget is used as a container widget to organize other widgets.

Label


The Label widget is used to provide a single-line caption for other widgets. It can also contain images.

Listbox


The Listbox widget is used to provide a list of options to a user.

Menubutton


The Menubutton widget is used to display menus in your application.

Menu


The Menu widget is used to provide various commands to a user. These commands are contained inside Menubutton.

Message


The Message widget is used to display multiline text fields for accepting values from a user.

Radiobutton


The Radiobutton widget is used to display a number of options as radio buttons. The user can select only one option at a time.

Scale


The Scale widget is used to provide a slider widget.

Scrollbar


The Scrollbar widget is used to add scrolling capability to various widgets, such as list boxes.

Text


The Text widget is used to display text in multiple lines.

Toplevel


The Toplevel widget is used to provide a separate window container.

Spinbox


The Spinbox widget is a variant of the standard Tkinter Entry widget, which can be used to select from a fixed number of values.

PanedWindow


A PanedWindow is a container widget that may contain any number of panes, arranged horizontally or vertically.

LabelFrame


A labelframe is a simple container widget. Its primary purpose is to act as a spacer or container for complex window layouts.

tkMessageBox


This module is used to display message boxes in your applications.

标准属性:

让我们来看看如何他们的一些共同的属性。如大小,颜色和字体指定.

Dimensions

Colors

Fonts

Anchors

Relief styles

Bitmaps

Cursors

几何管理:

Tkinter的部件有特定几何形状的管理方法,整个小部件父控件区域组织的目的。 Tkinter的公开以下几何经理类:包装,网格,位置.

pack()方法- 这个的几何管理器组织之前,将其放置在他们的父widget块部件.

grid()方法- 这的几何管理器组织表状结构中的小部件的父部件.

place()方法-这个的几何管理器组织放置在一个特定的位置,在他们的父widget部件.

编辑:编程 本文来源:GUI工具包的接口,这是一个开源的Python接口的w

关键词: