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 按钮,复选按钮,单选按钮的更多相关文章

  1. Android基础控件单选按钮RadioButton和Checkbox复选按钮的使用

    1.相关简介 RadioButton需要和RadioGroup结合使用,在RadioGroup设置布局方式! Checkbox是单独使用,本文为了方便放在了RadioGroup中! 2.简单使用 方法 ...

  2. 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法

    单选按钮(RadioButton)和复选框(CheckBox).状态开关按钮(ToggleButton)与开关(Switch)是用户界面中最普通的UI组件,他们都继承了Button类,因此都可直接使用 ...

  3. Android——复选按钮和开关按钮

    复选按钮和开关按钮代码如下: <LinearLayout android:layout_width="match_parent" android:layout_height= ...

  4. 安卓开发_复选按钮控件(CheckBox)的简单使用

    复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于 ...

  5. checkboxes(复选按钮)

    复选按钮是input的输入框的另一种类型. 每一个复选按钮都应该嵌套进label元素中. 所有关联的复选按钮应该具有相同的name属性. 下面是复选按钮的例子: <label><in ...

  6. JS-001-单选复选按钮操作

    此文主要针对 web 页面中常见元素(例如:单选按钮.复选按钮)的 JavaScript 操作,进行简单的源码示例演示,敬请小主们参阅.若有不足之处,敬请大神指正,不胜感激! 话不多言了,直接上码: ...

  7. JAVA 单选按钮、复选按钮

    //单选按钮和复选按钮 import java.awt.*; import javax.swing.*; public class Jiemian6 extends JFrame{ JPanel mb ...

  8. 单选按钮、复选按钮——axure线框图部件库介绍

    有时候发现这做事情坚持下来是一件很不容易的,写教程也一样,不过听到很多朋友对我说 这个全部是图片的教程 对他们入门帮助很多,我就想想 在坚持坚持把基础部分先完善了! 1. 简单的问卷调查: 您的性别? ...

  9. php表单中如何获取单选按钮与复选按钮的值(示例)

    转载:http://www.php.cn/php-weizijiaocheng-360027.html php代码中获取表单中单选按钮的值:(单选按钮只能让我们选择一个,这里有一个“checked”属 ...

随机推荐

  1. Application.HookMainWindow完全替代了原来的窗口过程(但是好像也会继续传递)

    unit HookMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialo ...

  2. Window运行命令大全

    1. gpedit.msc-----组策略    2. sndrec32-------录音机   3. Nslookup-------IP地址侦测器   4. explorer-------打开资源管 ...

  3. SQL Server索引设计 <第五篇>

    SQL Server索引的设计主要考虑因素如下: 检查WHERE条件和连接条件列: 使用窄索引: 检查列的选择性: 检查列的数据类型: 考虑列顺序: 考虑索引类型(聚集索引OR非聚集索引): 一.检查 ...

  4. 安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客

    一.引入开源项目的方式 使用开源项目 MultiType 的两种方式: 1.maven引入:在主Module 的 build.gradle 中加入 dependencies { ...... comp ...

  5. ## GridView 布局:item设置的高度和宽度不起作用、自动适配列数、添加Header和Footer ##

    一.item设置的高度和宽度不起作用 转自:http://www.cnblogs.com/0616--ataozhijia/p/6031875.html [Android Pro] listView和 ...

  6. 在 ASP.NET MVC 项目中使用 WebForm、 HTML

    原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...

  7. FNN模糊神经网络——信息系统客户服务感知评价

    案例描述 信息系统是否真正减轻业务人员的日常工作量提高工作效率?如何从提供“被动”服务转变为根据客户感知提供“主动”服务,真正实现电网企业对信息系统服务的有效管理?如何构建一套适合企业的信息系统客户服 ...

  8. VBA:Google翻译(含tk算法)

    完整的tk算法: //源自http://translate.google.cn/ TKK=eval('((function(){var a\x3d618632403;var b\x3d14854840 ...

  9. IOS 快速排序法

    - (NSMutableArray *)QuickSort:(NSMutableArray *)list StartIndex:(NSInteger)startIndex EndIndex:(NSIn ...

  10. SHDP--Working with HBase(三)之HBase+Phoenix实现分页

    先简单讲讲只用HBase来实现分页的思路: HBase利用scan来扫描表,通过startKey,stopKey来确定扫描范围,在需要进行分页时可以结合HBase提供的PagefFilter过滤扫描的 ...