嗨玩手游网

零基础教你学前端——33,label标签和只读禁用属性

实现表单控件的只读和禁用设置。

先来看一个案例,在填写"流调信息表"时,当点击输入框控件,光标会在输入框里闪烁,等待我们输入内容。此时,称这个输入框获得了焦点。刷新一下页面,再点击一下这个输入框控件左侧的标题文本,发现这个输入框也获得了焦点,用户填写表单的体验明显增强了。

使用 HTML 如何实现这一功能呢?

实现这一功能,只需要在表单中添加 label 标签就可以了。

label 是表单标签的意思,基本语法为:尖角号 label,尖角号/label。label 标签对屏幕阅读器用户很有用,因为当用户关注输入元素时,屏幕阅读器会大声读出标签。

label 还可以帮助我们点选难以点击的 非常小的区域,比如单选按钮或复选框,当用户点击 label 元素内的文本时,它可以切换单选按钮或复选框。

我们来演示一下。

打开编辑器,新建一个 label.html 文件,自动补全基础代码,在body标签内部编写一个 form 表单标签,在 form 标签里面添加文本请输入用户名: (冒号读出来) ,紧接着添加一个 input 标签,type 属性的值为 text。用 lable 标签把 "请输入用户名" 包裹起来,保存。

在浏览器中打开页面,点击文本,输入框控件并没有出现光标,哪里出现了问题?

原来,单纯的使用 label 标签还不够,需要为 label 标签添加 for 属性,作用就是用来定义与 label 关联的表单控件,它的值为表单控件的 id 属性值。

这里需要注意,id 属性值具有唯一性,一个页面中不能出现两个相同的 id 属性值。

返回编辑器中,我们给 input 输入框定义 id 属性,值设置为 username,再为 label 添加 for 属性,它的值要设置为输入框 id 属性的值: username。保存页面。

返回浏览器,刷新,再次点击文本,输入框获得了焦点,效果实现了。

继续回到"流调信息表"案例,在手机号输入框中,默认已经填入了手机号码,现在我们试图更改它,却发现无法修改,这个控件是只读的。

只读输入框控件虽然内容不能被输入和修改,却可以复制控件里面原有的文本 (这里有操作,录音时可以慢点)。

在提交表单时,只读控件的值可以被收集并发送给后端,这个特点我们将来再介绍。另外,textarea 多行输入框控件也可以设置成只读的。

如何实现这个效果呢?

其实很简单,给控件定义一个 readonly 只读属性就可以实现了。

回到编辑器,我们改一下文件名,添加单词 readonly。

继续在原文档里编写代码。在输入框后面添加一个 br 标签,书写文本 "您的手机号:" ,并在文本后面添加 input 标签,type 的取值设置 为text。

为了在浏览器中默认显示一个手机号码,需要为它定义一个 value 属性,value 的含义是值的意思,作用是给输入框一个默认值,可以在浏览器中显示给用户。

最后再定义一个 readonly 属性。

回到浏览器,刷新。此时试图修改手机号,是修改不了的。

再次回到"流调信息表"案例,在性别选择时,性别保密单选控件是灰色的,使用鼠标点击不能选中它。

这种效果是如何实现的呢?

实现这个效果,我们需要给表单控件添加一个 disabled 属性。disabled 是禁用的意思。一个禁用的表单控件是不可用和不可点击的。

当提交表单时,禁用的表单控件值是不会被收集和发送给后端的。disabled 属性可以添加给任何的表单控件。

回到编辑器,我们再改一下文件名,添加单词 disabled。

继续在原文档里编写代码。再添加一个 br 标签,书写文本"选择性别",使用 emmet 语法 input,中括号,type 等于 radio,空格,name 等于 gender,乘以3,按下 tab 键补全代码,(input[type=radio name=gender]*3) 在 input 后面分别添加男、女、保密。给最后一个控件再定义一个 disabled 属性。保存。

回到浏览器,刷新,一组单选框就做好了。性别的男、女可以点选,保密控件被禁用了,灰色显示,点击也不能被选中。

lable 标签以及表单控件的只读禁用设置就讲完了,大家自己动手实现一下吧!

文章配套视频「链接」

tkinter教程 - Label组件,你想象不到的强大(附带实例)

开篇

上一讲,主要讲的是 python自带可视化接口工具tkinter的窗口创建,算是整个系列的第一讲。如果没看过的同学,可以点击下方链接。

逃学博士出品 - 为python插上翅膀,可视化接口工具tkinter的详解

写这个教程的初衷是将自己这段时间学习使用tkinter的心得分享出来,给需要或者想要学习tkinter这个组件的同学参考使用。

这一讲,主角是tkinter组件团中的‘头号网红‘ - 标签 (Label)

标签(Label)组件

上一讲中的窗口建立好之后,就需要根据设计要求往窗口中添加组件了。tkinter中有几乎满足日常要求的所有组件。标签组件应该是其中出场最为频繁的组件之一了。

在tkinter模块下,可以使用tk.Label 或者ttk.Label去创建Label插件,功能几乎一样。ttk类是后续的tk类的补强,增添了很多组件。推荐使用ttk类。

如下代码就可以创建一个最简单的标签组件 LB_1。

import tkinter as tkimport tkinter.ttk as ttkwindow = tk.Tk()window.title('逃学联盟')window.resizable(True, True)window.minsize(200, 100)window.maxsize(1000, 500)LB_1 = ttk.Label(window, text='逃学联盟', font='微软雅黑, 12')LB_1.pack()window.mainloop()

创建的标签

生成标签组件的代码如下:

ttk.Label(上一级容器组件,可选参数)

上一级容器组件:在创建组件的时候,需要指定组件放置在哪一个容器组件中,比如上例中创建的LB_1是直接放在窗口下的。

可选参数: 每一个组件都会提供很多参数用来设置组件的外观或者显示内容。不同组件的参数大差不差。可以通过

组件对象名.keys() 查看组件下的可选参数。我们一个一个来看一下这些参数。

'background':背景色;'foreground':前景色;'font':字体设置,可以设置字体,字号,粗体/斜体等; 'borderwidth':边框宽度; 'relief':标签边框的样式,默认是tk.FLAT; 'anchor':标签的空间位置; 'justify':标签组件中文字的对齐方式,tk.LEFT, tk.RIGHT, tk.CENTER; 默认是居中; 'wraplength':如果文字过长,一行最多容纳的字符宽度,单位是像素; 'takefocus':如果设置为 True, 控件将可以获取焦点. 默认为 False; 'text': 标签内文字; 'textvariable':显示内容以变量形式传入; 'underline':对文字添加下划线,可以指定哪几个文字下方有下划线; 'width':标签宽度; 'image':添加图片; 'compound':如果标签内同时含有图片和文字,图片与文字的相对位置关系; 'padding':文字与标签边框的间距,单位像素; 'state':标签状态,默认为tk.NORMAL; 'cursor':当鼠标光标在标签上方时的外形;

如上例中,在创建LB_1标签的时候,我们设置了显示内容为“逃学联盟”,字体为微软雅黑,字号为12。

注意:创建组件之后,需要将组件放进 上一级容器组件中,这就是 pack()方法的作用。tkinter模块中有pack,grid和place三种排放组件的方式,下一讲主要讲讲这个。

实例一:创建电子钟

通过实例上手可以快速学习编程语言。下面我们就用这两讲学到的窗口和标签组件创建一个自动刷新的电子钟。

电子时钟

import tkinter as tkimport tkinter.ttk as ttkfrom time import strftimewindow = tk.Tk()window.title('电子时钟')window.resizable(True, True)def get_time(): local_time = strftime('%H:%M:%S %p') LB_1nfig(text=local_time) window.after(1000, get_time) returnLB_1 = ttk.Label(window, font=('微软雅黑', 20, 'bold'), anchor=tk.CENTER, background='#008CBA', foreground='white')LB_1.pack(fill=tk.BOTH, expand=True)get_time() window.mainloop()

strftime 方法是默认将当地时间转换成 设定的显示形式,如上所示'%H:%M:%S %p‘。好奇的同学可以自行查找学习。

创建标签 LB_1,字体为微软雅黑,字号20,粗体;anchor将标签在窗口中居中显示;background:背景色为'#008CBA';foreground:前景色或者可以看做字体颜色为白色; (以上使用了两种不同的方式设置颜色)get_time函数中,window.after (上一讲说过)每隔1000毫秒读取一次时间,并刷新LB_1的文字显示。同时,时间显示为居中显示justify=tk.CENTER。

以上我们就制成了一个电子时钟,美观大方。一个例子我们就熟悉6钟参数;

实例二:relief 参数详解

relief参数式样

import tkinter as tkimport tkinter.ttk as ttkwindow = tk.Tk()window.title('relief')window.resizable(True, True)relief_list = ['flat','groove', 'raised', 'ridge', 'solid', 'sunken']for i in relief_list: tk.Label(window, text=i, relief=i, padx=5, pady=5).pack(side=tk.LEFT) window.mainloop()

relief参数的样式有'flat','groove', 'raised', 'ridge', 'solid', 'sunken'。默认是‘flat',就是没有格式。

其别注意的是,relief=‘groove’和relief=tk.GROOVE都可以用来设置relief参数。如上例中,我们依次创建了不同relief样式的图标。大家以后可以根据需要设置。

实例三:anchor参数

anchor参数可选值

import tkinter as tkimport tkinter.ttk as ttkfrom time import strftimewindow = tk.Tk()window.title('电子时钟')window.minsize(400, 200)window.resizable(True, True)def get_time(): local_time = strftime('%H:%M:%S %p') LB_1nfig(text=(local_time)) window.after(1000, get_time) returnLB_1 = ttk.Label(window, font=('微软雅黑', 20, 'bold'), anchor=tk.NW, background='#008CBA', foreground='white')LB_1.pack(fill=tk.BOTH, expand=True)get_time() window.mainloop()

如果我们将电子时钟的anchor参数设置为tk.NW,则时间会显示在左上角。如下图所示:

anchor=tk.NW

实例四:电子相册

电子相册这个实例主要用来熟悉image和compound这两个参数。 由于篇幅问题,下一讲开我们会以电子相册实例开篇。

总结

工欲善其事必先利其器,我们在了解学习一个模块的时候,一定要多做例子,这样才能更快更准确。

谢谢大家,喜欢的话就订阅 ‘逃学博士’并转发!

Golang中label的使用

Go 语言中有 goto这个功能,在处理多级嵌套时非常有用。

Go语言支持label(标签)语法:分别是break label和 goto label 、continue label;

break label

break 一般用来跳出当前所在的循环,但是我们有业务场景,需要使用到跳出带外层循环怎么办?break label 跳出循环不再执行for循环里的代码。

func main() {LABEL1:for i := 0;i < 3;i++ {if i == 2 {break LABEL1}fmt.Println("i==", i)}}//i== 0//i== 1

break标签只能用于for循环,不能和switch使用,在其他语言里switch与break是搭档;

goto label

goto 可以无条件的跳转执行的位置,但是不能跨函数,需要配合标签使用。

func main() {fmt.Println("start")goto LABEL1fmt.Println("goto ...") //not runLABEL1:fmt.Println("label1...")goto LABEL1fmt.Println("end") //not run}//start//label1//label1//... 一直循环label1continue label

continue 是继续循环下一个迭代,继续的是最外层循环。

func main() {LABEL1:for i := 0;i < 3;i++{for j := 0;j < 3;j++{if j == 1{continue LABEL1}fmt.Printf("i==%v, j==%v\n", i, j)}}}//i==0, j==0//i==1, j==0//i==2, j==0

更多攻略
游戏推荐
更多+