首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GUI的最终选择:Tkinter(三)

10 Scale组件

Scale组件跟Scrollbar滚动条组件很相似----都可以滚动、都是条形-----但是它们的使用范围不尽相同。Scale组件主要是通过滑块来表示某个范围的一个数字,可以通过修改选项设置范围以及分辨率(精度)。

当希望用户输入某个范围的一个数值,使用Scale组件可以很好地代替Entry组件,创建一个指定范围的Scale组件其实非常容易,只需要指定它的from和to两个选项即可。但由于from本身是Python的关键字,所以为了区分需要在后边紧跟一个下划线,如from_。

如下图所示:

使用get()方法获取当前滑动的位置:

如下图所示:

可以通过resolution选项控制分辨率(步长),通过tickinterval选项设置刻度:

如下图所示:

11 Text组件

前面已经学了不少组件:绘制单行文本使用Label组件多行选使用Listbox组件,输入框使用Entry组件,按钮使用Button组件,还有Radiobutton和Checkbutton组件用于提供单选或多选的情况,多个组件可以用Frame组件先搭建一个框架,这样组织起来会更加有条不絮。最后还学习了两个滚动的组件:Scrollbar和Scale、Scrollbar组件用于实现滚动条,而Scale则是让用户在一个范围内选择一个确定的值。

Text(文本) 组件用于显示和处理多行文本。在Tkinter的所有组件中,Text组件显得异常强大和灵活,它适用于处理多种任务,虽然该组件的主要目的是显示多行文本,但它长城被用于作为简单的文本编辑器和网页浏览器使用。

当创建一个Text组件的时候,它里面是没有内容的,为了给其插入内容,可以利用insert()方法以及INSERT或END索引号:

如下图所示:

Text组件不仅支持插入和编辑文本,它还支持插入image对象和widows组件。

如下图所示:

下面的代码将实现单击显示一张图片

如下图所示:

11.1 Indexes用法

Indexes(索引)是用来指向Text组件中文本的位置,跟Python的序列索引一样,Text组件索引也是对应实际字符之间的位置。

Tkinter提供一系列不同的索引类型,

"line.column"(行/列).

"line.end"(某一行的末尾)

INSERT.

CURRENT.

END.

user-defined marks.

user-defined tags("tag.first","tag.last").

selection(SELFIRST.SELLAST).

window coordinate("@x,y").

embedded object name(window,images)

expressions.

"line.column"

用行号和列号组成的字符串是常用的索引方式,它们将索引位置的行号和列号以字符串的形式表示出来(中间以"."分隔,例如"1.0").需要注意的是,行号以1开始,列号则以0开始,还可以使用一下语法构建索引:

"%d.%d" % (line, column)

指定超出现有文本的最后一行的行号,或超出一行中列数的列号都不会引发错误。对于这样的指定,Tkinter解释为已有内容的末尾的下一个位置。

需要注意的是,使用"行/列"的索引方式看起来像是浮点值。其实在需要指定索引的时候使用浮点值代替也是可以的:

如下图所示:

“line.end”

行号加上字符串".end"的格式表示为该行最后一个字符串的位置:

如下图所示:

INSERT(或“insert”)

对应插入光标的位置

CURRENT(或“current”)

对应与鼠标坐标最接近的位置。不过,如果你紧按鼠标任何一个按钮,会直接到你松开它才响应。

END(或“end”)

对应Text组件的文本缓冲区最后一个字符的下一个位置。

user-defined marks

user-defined marks是对Text组件中位置的命名。INSER和CURRENT是两个预先命名好的marks,除此之外可以自定义marks。

User-defined tags

User-defined tage代表可以分配给Text组件的特殊事件绑定和风格。可以使用“tag.first”(使用tag的未必能的第一个字符之前)和“tag.last”(使用tag的文本的最后一个字符之后)语法表示标签的范围:

selection(SELFIRST,SELLAST)

selection是一个名为SEL(或"sel")的特殊tag,表示当前被选中的范围,可以使用SELFIRST到SELLAST来表示这个范围。如果没有选中的内容,那么Tkinter会抛出一个TclError异常。

window coordinate("@x.y")

可以使用串口坐标作为索引。例如在一个事件绑定中,你可以使用以下代码找到最接近鼠标的字符:

embedded object name (window,images)

embedden object name用于指向在Text组件中嵌入的window和image对象。要引用一个window,只要简单地讲一个Tkinter组件实例作为索引即可。引用一个嵌入的image,只需要使用相应的PhotoImage和BitmapImage对象。

expressions

expressions用于修改任何格式的索引,用字符串的形式实现修改索引的表达式,具体表达式实现如表:

提示:只要结果不产生歧义,关键字可以被缩写,空格也可以省略。例如,“+ 5 chars”可以简写成"+5c"

在实现中,为了确保表达式为普通字符串,你可以使用str或格式化操作来创建一个表达式字符串。下面例子演示如何删除插入光标前面的一个字符。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215B02IMM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券