Chapter 4. Button, Checkbutton, and Radiobutton Widgets 按钮,复选按钮,单选按钮
Chapter 4. Button, Checkbutton, and Radiobutton Widgets 按钮,复选按钮,单选按钮
几乎所有的Perl/Tk 应用使用按钮以这样或者那样的方式。有3种不同的按钮类型 部件 在标准的TK里
Button,Checkbutton 和Radiobutton.
这章节覆盖了3种类型的按钮 :
每个按钮在这章看起来都不同,主要是选择指标的使用
按钮部件根本不使用指标, 但是Checkbutton 和Radiobutton 部件使用它们来表明
按钮是否被选中 ,按钮部件是:
Button:
一个简单的按钮,shown in Figure 4-1. 用户可以按下按钮 通常一个立即的动作产生结果
Figure 4-1. Button widget 按钮部件
Checkbutton
一个Checkbutton 显示在图4-2,选中或者未被选中,只有可见的表示被改变,
状态是不校验的 直到后面,
Checkbuttons 按钮可以用于单个的或者按组
Figure 4-3. Radiobutton widget 单点按钮
一个按钮 是Tk的简单的部件,用户按下它 然后一些立即发生。
按钮的标签 让动作更清晰,
比如, 文本比如Quit, save 或者打印给出用户一个好的注意 当按下按钮会看到的操作,
当按钮被按下, 看起来一模一样,除非程序改变了文本或者颜色
Checkbuttons 是当你需要选择一个,一些或者所有的条目。 比如,
一个消费清单 可能有 Bread, Milk, Soda, and Eggs.
如果你都不需要 你可以不选, 或者选择所有 如果选择一切
当用户点击每个按钮, 选项指标会被填满 或留空
Figure 4-4. Checkbuttons used for a shopping list 可选按钮用于消费列表
Figure 4-5. Radiobuttons
对于任何部件被创建, 你调用一个方法从父部件 匹配部件的名字:
4.1. Creating Button Widgets
对于任何你创建的部件,你调用一个方法从父部件 匹配部件的名字:
$button = $mw->Button->pack;
$rb = $mw->Radiobutton->pack;
$cb = $mw->Checkbutton->pack;
这些是不现实的例子 你最有可能用一些选项 当你创建不同类型的按钮:
# Create a Button widget
$mw->Button(-text => 'Go', -command => \&go_go_go)->pack;
# Create a Checkbutton
$cb = $mw->Checkbutton(-text => 'Red', -onvalue => 'Red',
-offvalue => '')->pack;
# Create three Radiobuttons in Frame widget $f1
# Link them using $favcolor
foreach (qw/red blue green/) {
$f1->Radiobutton(-text => $_, -variable => \$favcolor,
-value => $_)->pack(-anchor => 'w');
}
我们将解释 选项用于先前的例子 ,特别是 -command 预计回调
唯一一次 你可能要保存一个引用 当你创建一个按钮,设置文本 设置一个简单的回调
$mw->Button(-text => 'Quit', -command => sub { print 'Bye!'; exit; })->pack;
4.2. Standard Options for Each Button Type 对于每种按钮类型的标准选项:
在我们进入所有的选项 对于每个按钮部件, 让我们来看看常见的问题:
当我们创建一个按钮,使用 -text and -command options.
-text 选项让用户指导 按钮是干什么用的,
-command 选项 当用户按下按钮 执行了什么
$b = $mw->Button(-text => 'Exit', -command => sub { exit; } )->pack;
# Use the same sub for many Buttons
$b = $mw->Button(-text => 'Red', -command => [\&change_color, 'red'])->pack;
$b = $mw->Button(-text => 'Blue',
-command => [\&change_color, 'blue'])->pack;
$b = $mw->Button(-text => 'Green',
-command => [\&change_color, 'green'])->pack;
当创建Checkbuttons时, 你是用 -variable除了 -text
使用 -variable 给你一个简单的方式来发现 按钮是否被点击(你想很少用到-command 在Checkbutton里)
$mw->Checkbutton(-text => 'Print Header', -variable => \$print_header);
sub print_document {
if ($print_header) {
# Code to print header here...
}
}
存储在$print_header 的值 是1或者0 一个简单的test 会告诉你 如果Checkbutton 是被检查了
当我们创建单选按钮,我们总是创建多于一个使用 -text, -variable, and -value options:
4.3. Table of Options for Button-Type Widgets 表选项用于 按钮类型部件
按钮组件贡献几乎所有的相同选项,表4-1 显示了一个完整的选项列表
哪个部件会应用 我们将讨论选择在更多的细节 放我们研究按钮能干什么
4.4. Displaying Text on Buttons 在按钮上显示文本框:
显示当按钮按下后 按钮会做什么,设置它的文本字符串使用 -text or -textvariable 选项
描述的文本字符串应该是短的和简单的:
文本选项 是更加通用的方式来指定文本字符串:
-text => 'Submit'
字符串可以是任何东西, 字母数字,新行 或者变量。
文本字符串 像其他字符串一样 在perl, 如果它是放在单引号里,它就是字面上的意思
如果放在双引号里,它是插入的。
插值只发生一次( 第一次是选项被解析)
如果一个变量在程序后面改变, 它对按钮的文本没有影响。
没有默认的对于-text岫岩县,如果text没有指定,Button 会简单没有任何文本。
另外一种方式来实现文本是通过使用 -textvariable选项。
-textvariable 选项 总是一个scalar 标量来关联按钮
4.9. The -command Option 命令行选项:
你总是创建按钮部件 带上 -command option,这是因为 当按钮点击后做一些事情,
我们和一个按钮回调联系在一起。一个按钮实际上是的Perl的一个子函数
会被调用当鼠标按钮 1 被释放
简单的方式来指定一个 -command 回调是通过使用一个函数引用,在我们的很多例子中,
我们使用一个匿名代码引用到一个子函数 来简单的执行一个exit语句
$mw->Button(-text => "Done", -command => sub { exit })->pack;
我们也可以引用一个显示的子过程( 可以从多个地方调用)
$mw->Button(-text => "Done", -command => \&save_and_exit)->pack;
注意 在两个例子里,-command 除了一个引用到一些Perl代码。
还有另外的回调格式
fully explained in Chapter 15, "Anatomy of the MainLoop".
Whereas Button widgets 基本没有回调, Checkbutton and Radiobutton widgets
是设计用于改变变量的值
通常, 没有立即的动作是需要的 当一个Checkbutton or Radiobutton 切换
4.20. Configuring a Button 配置一个按钮:
通常,你创建一个目录 随后显示它 我们还没有明确讨论的是你能做什么:
所有选项 没有被指定 ,当你创建一个部件。 你可以配置一个部件 随后 使用配置方法,
只要你还有部件的引用,此外, 你可以找出一个部件是如何配置的通过使用cget 方法 这里有一个例子:
$b = $mw->Button(-text => "Self referencing Button")->pack;
$b->configure(-command => [\&send_button, $b]);
在本例中,我们需要使用实际的部件引用 在回调 -command.
我们不能创建回调在没有部件引用的情况下, 使用配置方法
实际上,我们可以创建回调当部件被创建时 如果部件引用是预先申明的 在$b对象
确定 当前选项的值,调用cget
$state = $button->cget(-state); # Get the current value for -state
Chapter 4. Button, Checkbutton, and Radiobutton Widgets 按钮,复选按钮,单选按钮的更多相关文章
- Android基础控件单选按钮RadioButton和Checkbox复选按钮的使用
1.相关简介 RadioButton需要和RadioGroup结合使用,在RadioGroup设置布局方式! Checkbox是单独使用,本文为了方便放在了RadioGroup中! 2.简单使用 方法 ...
- 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法
单选按钮(RadioButton)和复选框(CheckBox).状态开关按钮(ToggleButton)与开关(Switch)是用户界面中最普通的UI组件,他们都继承了Button类,因此都可直接使用 ...
- Android——复选按钮和开关按钮
复选按钮和开关按钮代码如下: <LinearLayout android:layout_width="match_parent" android:layout_height= ...
- 安卓开发_复选按钮控件(CheckBox)的简单使用
复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于 ...
- checkboxes(复选按钮)
复选按钮是input的输入框的另一种类型. 每一个复选按钮都应该嵌套进label元素中. 所有关联的复选按钮应该具有相同的name属性. 下面是复选按钮的例子: <label><in ...
- JS-001-单选复选按钮操作
此文主要针对 web 页面中常见元素(例如:单选按钮.复选按钮)的 JavaScript 操作,进行简单的源码示例演示,敬请小主们参阅.若有不足之处,敬请大神指正,不胜感激! 话不多言了,直接上码: ...
- JAVA 单选按钮、复选按钮
//单选按钮和复选按钮 import java.awt.*; import javax.swing.*; public class Jiemian6 extends JFrame{ JPanel mb ...
- 单选按钮、复选按钮——axure线框图部件库介绍
有时候发现这做事情坚持下来是一件很不容易的,写教程也一样,不过听到很多朋友对我说 这个全部是图片的教程 对他们入门帮助很多,我就想想 在坚持坚持把基础部分先完善了! 1. 简单的问卷调查: 您的性别? ...
- php表单中如何获取单选按钮与复选按钮的值(示例)
转载:http://www.php.cn/php-weizijiaocheng-360027.html php代码中获取表单中单选按钮的值:(单选按钮只能让我们选择一个,这里有一个“checked”属 ...
随机推荐
- [转]从数据库中导出用友U8的现存量数据到Excel表
转载自:http://www.czerp.com.cn/page/Default.asp?ID=372 可通过Excel获取外部数据的方式与SQL数据库创建查询连接,并导入到Excel中: Selec ...
- 关于css浮动的一些总结
首先给浮动一个定义吧 浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次. 从测试中来看 元素之间的浮动关系是根据上一个元素来判断的如果上一个元素是浮动的它会跟在浮动元素 ...
- FileStream类
使用FileStream能够对对系统上的文件进行读.写.打开.关闭等操作.并对其他与文件相关的操作系统提供句柄操作,如管道,标准输入和标准输出.读写操作可以指定为同步或异步操作.FileStream对 ...
- FileAttributes枚举
FileAttributes枚举是一个专门用于标记硬盘上的文件属性的枚举,枚举的说明在这里:http://www.cnblogs.com/kissdodog/archive/2013/01/16/28 ...
- WebStorm JavaScript 开发神器
WebStorm 百度百科 http://baike.baidu.com/view/5443872.htm?fr=aladdin
- Android原型界面设计工具
第 1 页:原型界面制作工具Lumzy 第 2 页:在线工具Mockingbird 第 3 页:开源UI工具The Pencil Project 第 4 页:JS开发工具包Dojo 第 5 ...
- live555 源代码简单分析1:主程序
live555是使用十分广泛的开源流媒体服务器,之前也看过其他人写的live555的学习笔记,在这里自己简单总结下. live555源代码有以下几个明显的特点: 1.头文件是.hh后缀的,但没觉得和. ...
- Ice_cream's world I
Ice_cream's world I Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) ...
- spring MVC做form提交Neither BindingResult nor plain target object for bean name 'command' available
这两天在做spring3.0 MVC+hibernate3.2的练习中,做简单的form提交, 一直报java.lang.IllegalStateException: Neither BindingR ...
- 基于express框架的应用程序骨架生成器介绍
作者:zhanhailiang 日期:2014-11-09 本文将介绍怎样使用express-generator工具高速生成基于express框架的应用程序骨架: 1. 安装express-gener ...