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. 【Shell脚本】运行shell脚本文件的几种方法与区别

    Shell脚本不同的运行方式会对当前Shell设置或者运行结果有所不同. 假设现在有一个脚本名为display_shell_script_args.sh,其内容如下: #!/home/pyf/bin/ ...

  2. python爬取某个网页的图片-如百度贴吧

    python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

  3. Difference Between Mod_Python & Mod_Wsgi | eHow

    Difference Between Mod_Python & Mod_Wsgi | eHow     x    YES    NO    Why not?     Thanks for he ...

  4. WIN7 64位系统安装JDK并配置环境变量

    本文来自:http://jingyan.baidu.com/article/3c343ff70bc6ea0d377963df.html 工具/原料 JDK 方法/步骤   首先,下载JDK安装包,到官 ...

  5. [LeetCode] Interleaving String [30]

    题目 Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: ...

  6. 通过ant脚本编译打包android工程

    通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式:  方式一:命令行手动编译打包  方式二:使用ant自动编译打包  方式三:使用eclipse+AD ...

  7. 项目总结之SSI (一)

    这是我进公司之后做的第一个新项目,从无到有. 去年夏天和同事在会议室里度过的日子还恍如昨日啊,时光啊,你慢些走... 作为一个外部项目,美工设计了一个Win8风格的界面,看到现在做前台的同学做的一样是 ...

  8. 《JavaScript 闯关记》之语法

    JavaScript 的语法大量借鉴了 C 及其他类 C 语言(如 Java 和 Perl)的语法.因此,熟悉这些语言的开发人员在接受 JavaScript 更加宽松的语法时,一定会有种轻松自在的感觉 ...

  9. 百度Echarts使用心得

    echarts官网:http://echarts.baidu.com/index.html 最近用了echart,有一下问题需要注意: 1.echarts的使用实例 代码:从地图中取得whitejso ...

  10. Repeater动态添加行

    <table class="table table-striped table-bordered table-hover">            <asp:Re ...