Chapter 5. Label and Entry Widgets  标签和输入部件





有时候,你需要用户输入特定的信息,比如他们的名字,地址或者 甚至序号。









简单的方式来实现这个是使用Enry 部件,你可以使用一个标签部件 让用户清晰的知道 什么应该被输入在Entry里。









大多数时候,你会看到多次使用标签和Entry 组合









5.1. The Label Widget  Label 标签:





一个标签 看起来像一个按钮,但是不做任何事情。









它是一个非交互式的部件,默认 不能有键盘焦点(意思是你不能tab) 





它不会做任何,当你点击它的时候





use Tk;

$mw = MainWindow->new( );

$mw->Label(-text => "Label Widget")->pack( );

MainLoop;













不包含 框架部件,Label 是一个最简单的部件。 类似于按钮 可以显示文本(或者图片)





显示多行文本,有不同的字体  





图5-2 显示一个简单的窗体, 按钮和标签 如下代码创建:





use Tk;

$mw = MainWindow->new( );

$mw->Label(-text => "Label Widget")->pack( );

$mw->Button(-text => "Exit", -command => sub { exit })->pack( );

MainLoop;









图5-2,一个简单的窗口,标签和按钮:









这里有一个典型的使用对于一个标签:





1.放置一个标签 在Entry 部件的左边,因此用户知道应该输入什么类型的数据:









2. 放置一个标签在一组单点按钮来说明它的目的(比如 后台颜色).









3.使用一个标签 告诉用户 他们做错了什么, 输入的号码是10和100.









典型的,你会使用对话框组合部件给用户消息,但不总是这样









4.放置一个消息行在你的窗口的底部,每个其他的部件需要有一个映射 显示一个字符串 包含信息









5.1.1. Creating a Label  创建一个部件:









这个命令创建一个Label,当然 这是基本的用法:





$label = $parent->Label( [ option => value . . . ] )->pack( );









5.1.3  一个标签不同于其他小部件:





当我们创建 按钮类型部件,我们可以用鼠标点击它们或者使用键盘按下按钮。









一个标签部件,换句话说, 不与用户交互,除非我们添加显示绑定。





对于 -takefocus option 默认值选项是0,也就是说 你不能tab。(切换)









当在部件之间tab,突出的矩形显示哪个部件当前有键盘焦点。









因为我们不允许标签能focus(记住, -takefocus is set to 0),









标签部件不能 有-state 选项, 因为我们不能点击一个标签,我们不应该禁用它









5.1.4. Relief 救援:





5.2. The Entry Widget  输入部件:





知道现在, 我们知道的唯一的输入 是用户的鼠标点击在一个按钮部件上(按钮,多选按钮,单选按钮)









是通过-command 选项处理。









从鼠标点击获取输入是有用的,  但是也有限制。









Enry 部件 让用户输入文本 可以用于任何应用,这里有几个例子,你可以使用Entry 部件:









1.数据库的形式 需要每个域一个entry (例子,Name,Last name,Address)





2.在一个软件登记窗口 需要一个序列号





3.在一个登录窗口 需要用户名和密码





4. 在一个配置窗口 得到printer的名字





5.在一个打开的文件窗口需要文件的名字和路径









Figure 5-5. Entry widget 输入部件:





通常情况下,我们不关心用户输入到一个Entry 部件 知道他们完成打字,









任何处理会发生 "事后" 当用户点击Go按钮做一些排序。









你可以幻想和处理每个字符当它输入通过设置一个复杂的绑定,但是它可能更加麻烦相比它的价值





用户可以输入任何东西到一个Entry 部件,它是有你来决定 输入的文本是否有效,









当准备使用从一个Entry 得到的信息, 我们需要做一些错误检查。





如果我们需要一个整型但是给了一些字母字符,我们需要给出一个警告或者错误信息:









一个Entry 部件是更加复杂的相比 它第一次出现,  Entry部件是一个简化的单行文本编辑器。









文本可以被输入,用鼠标选择,删除和增加。









一个Entry 部件是一个中间线的部件, 它是更复杂的相比按钮,









5.2.1. Creating the Entry Widget  创建一个Entry 部件:





这里没有惊喜:









$entry = $parent->Entry( [ option => value . . . ] )->pack;





当Entry 部件被创建,  它最初是空的文本,但是插入的光标(如果Entry 有键盘锁定) 是在最左边:









5.2.3. Assigning the Entry's Contents to a Variable  将Entry的内容 分配给变量:





-textvariable option  让你知道 用户输入的是什么 在Enry 部件:





-textvariable => \$variable









现在你应该熟悉这个选项 从我们按钮的几个例子。









任何的文本输入 到Entry 部件会分配到$variable.









相反的也同样适用,  任何字符被分配给$variable 会出现在Entry 部件。

















重要的是要记住无论用户输入什么, 它将被分配给这个变量。









这意味着 即使你预计数字输入  你也有可能得到像3s14









如果用户意外的 按下了错误的键。









在使用任何信息从一个Entry 部件, 最好做一些错误检查来确保它的信息是你想要的,









至少,是正确的格式。  使用3s14 会产生你不想要的结果。













另外的方式来找到 在Entry里的内容是使用get方法:





$stuff = $entry->get();









5.2.5. Entry Indexes  Entry 条目:









操作文本在Entry 条目,你需要一些方式来定义特定的部分或者在文本内的位置。









最后的例子实际上用于一个Index ,









$e->insert('end', $_) 使用index 'end'.









就像insert 方法( 在本章后面讨论), 所有的方法需要的信息关于一个位置会需要一个index





(或者2个,如果方法需要一个范围的字符)









这个index 可以简单为0,着意味着文本的开始,或者更加负载的,比如'insert';









这里有不同形式的index ,他们所表达的意思:









n(任何整数)





一个数值字符的位置, 0是字符串里的第一个字符,如果Entry 包含的字符串  "My mother hit your mother right on the 





nose" 









我们使用index 12,字符指向到t 









'insert'  









   这个字符直接跟着 insertion光标,  insertion cursor 是有趣的看小酒吧的事情





出现在Entry 部件当文本被编辑,你可以移动它围绕着箭头键或者通过点击不同的位置 在Enry 部件









'end'





字符 只在最后一个在文本串里, 这个值和你指定的整个字符串的长度是一样的 









5.2.6. Text Selection Options  文本选择选项:









你可以选择文本在一个Enry 部件,让一些事情发生。  indexes  'sel.first'





和 'sel.last' 指向开始和 选择文本的结束,分别的.









你也可以让选择的文本变量在剪贴板 在Unix 系统通过使用 -exportselection option:









-exportselection => 0 | 1 





-exportselection option 选项表明 是否任何选中的文本在一个Entry 会被放入到选择的buffer









除了存储在内部的到Entry 作为选择项。





让这个选项的默认值,你可以粘贴选择的文本到其他应用。









选中的文本也有一些相关的颜色选项  -selectbackground,-selectforeground, and -selectborderwidth:









-selectbackground => color

-selectforeground => color

-selectborderwidth => amount

Chapter 5. Label and Entry Widgets 标签和输入部件的更多相关文章

  1. VUE实现Studio管理后台(完结):标签式输入、名值对输入、对话框(modal dialog)

    一周的时间,几乎每天都要工作十几个小时,敲代码+写作文,界面原型算是完成了,下一步是写内核的HTML处理引擎,纯JS实现.本次实战展示告一段落,等RXEditor下一个版本完成,再继续分享吧.剩下的功 ...

  2. jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现

    jQuery计算文本宽度的原理是利用html提供的<pre>标签,向dom中动态添加<pre>标签,标签里的内容就是要测试长度的文本,获取完长度之后再删除刚才添加的<pr ...

  3. Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现

    转载请注明出处:http://www.cnblogs.com/bethansy/p/6953625.html LPA算法的思路: 首先每个节点有一个自己特有的标签,节点会选择自己邻居中出现次数最多的标 ...

  4. Tkinter 之Entry输入框标签

    一.参数说明 语法 作用 Entry(root,width=20) 组件的宽度(所占字符个数) Entry(root,fg='blue') 前景字体颜色 Entry(root,bg='blue') 背 ...

  5. Python3 tkinter基础 Entry validate isdigit 只能输入数字的输入框

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. KVO---视图间数据的传递:标签显示输入的内容【多个视图中】

    RootViewController.m #import "ModalViewController.h" @interface RootViewController () @end ...

  7. 设置div标签可以输入文字

    1.contenteditable 属性可以设置div标签为克输入标签,   2.input和textarea虽然是常用的输入标签,但是这两个标签不能设置最大高度和最小高度, 随意如果想随着输入的内容 ...

  8. input 标签只能输入数字

    $("input[name='contact']").keyup(function(){ $("input[name='contact']").attr(&qu ...

  9. JQ input标签限制输入数字或字母

    <input type="text"  maxlength="20" class="input5" onkeyup="val ...

随机推荐

  1. Android IntentService 与Alarm开启任务关闭任务

    1:MyService public class MyService extends IntentService{ AlarmManager alarmManager = null; PendingI ...

  2. rpm包制作

    ubuntu下先下载sudo apt-get install rpm就行了. 然后测试下rpm和rpmbuild命令都是存在的.好了,OK. rpm安装包的制作有严格的自定义的路径,这个路径是在/us ...

  3. win7 奇怪的temp用户

    在C:\Users\TEMP 有个temp用户,win+r打开的也是 C:\Users\TEMP>,而不是C:\User\Administrator. 以下文章转自: http://hi.bai ...

  4. 开源欣赏wordpress之文章新增页面如何实现。

    本地网址http://localhost/wordpress/wp-admin/post-new.php 进而找到post-new.php页面. 进入之后, require_once( dirname ...

  5. LeeCode-Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  6. PHP伪静态与短链接

    如今,Web服务高速发展的时代,各式各类的门户网站,如新浪http://www.sina.com.腾讯http://www.qq.com,这些网站大家都很容易记住,因为这种名称都是有规则和含义的.如果 ...

  7. 回溯算法-C#语言解决八皇后问题的写法与优化

    结合问题说方案,首先先说问题: 八皇后问题:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 嗯,这个问题已经被使用各种语言解 ...

  8. Java安装根目录

    bin存放了Java的操作工具,比如编译工具javac.启动JVM的Java等 db存放了Java测试的数据库Derby,企业不用 include存放C++的头文件 jre运行环境,里面有JVM li ...

  9. Unity Easy Save简单实用

    Easy Save使用: 1.保存游戏进度        2.设计游戏关卡(怪物数量,坐标,背景图等等) Easy Save默认存储地址: C:\Users\Administrator\AppData ...

  10. Mac 删除Openfire

    首先,确保你已经关掉了openfire 打开终端 (在应用程序-->实用工具-->) 输入以下命令 sudo rm -rf /Library/PreferencePanes/Openfir ...