tkinter之文本框Entry,Radiobutton选项按钮和Checkbutton复选框

5.文本框Entry

5.1 基本用法

所谓的文本框Entry,通常是指单行的文本框,在GUI程序设计中这是用于输入的最基本Widget控件,我们可以使用它输入单行字符串,如果所输入的字符串长度大于文本框的宽度,所输入的文字会自动隐藏造成部分内容无法显示。碰到这种状况时,可以使用箭头键移动鼠标光标到看不到的区域。需留意的是文本框Entry限定是单行文字,如果想要处理多行文字需使用Widget控件中的Text,本书将在第17章讲解。它的使用格式如下。

Entry(父对象,options,…)

Entry( )方法的第一个参数是父对象,表示这个文本框将建立在哪一个窗口内。下面是Entry( )方法内其他常用的options参数。
(1)bg或background:背景色彩。
(2)borderwidth或bd:边界宽度默认是2像素。
(3)command:当用户更改内容时,会自动执行此函数。
(4)cursor:当鼠标光标在复选框上时的光标形状。
(5)exportselection:如果执行选取时,所选取的字符串会自动输出至剪贴板,如果想要避免,可以设置exportselection=0。
(6)fg或foreground:前景色彩。
(7)font:字形。
(8)height:高,单位是字符高。
(9)highlightbackground:当文本框取得焦点时的背景颜色。
(10)highlightcolor:当文本框取得焦点时的颜色。
(11)justify:当含多行文字时,最后一行的对齐方式。
(12)relief:默认是relief=FLAT,可由此控制文字外框。
(13)selectbackground:被选取字符串的背景色彩。
(14)selectborderwidth:选取字符串时的边界宽度,预设是1。
(15)selectfroeground:被选取字符串的前景色彩。
(16)show:显示输入字符,例如,show=’*'表示显示星号,常用于输入密码字段。
(17)state:输入状态,默认是NORMAL表示可以输入,DISABLE则表示无法输入。
(18)textvariable:文字变量。
(19)width:宽,单位是字符宽。
(20)xscrollcommand:在x轴使用滚动条。

程序实例:

from tkinter import *

tk = Tk()
label1 = Label(tk, text="账号",
               font="Times 12 bold",
               )
label1.grid(row=0)
label2 = Label(tk, text="密码",
               font="Times 12 bold",
               )
label2.grid(row=1)

entry1 = Entry(tk)
entry2 = Entry(tk)
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
tk.mainloop()

5.2 使用show参数隐藏输入的字符

Entry控件可以使用show参数设置隐藏输入字符的特性,常用在密码的输入控制。

from tkinter import *

tk = Tk()
label1 = Label(tk, text="账号",
               font="Times 12 bold",
               )
label1.grid(row=0)
label2 = Label(tk, text="密码",
               font="Times 12 bold",
               )
label2.grid(row=1)

entry1 = Entry(tk)
entry2 = Entry(tk, show="*")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
tk.mainloop()

5.3 Entry的get()方法

利用这个方法获得目前Entry的字符串内容。Widget控件有一个常用方法Quit,执行此方法时Python Shell窗口的程序将结束,但是此窗口应用程序继续运行。

5.4 Entry的insert()方法

在设计GUI程序时,常常需要在建立Entry的文本框内默认建立输入文字,在Widget的Entry控件中可以使用insert(index,s)方法插入字符串,其中,s是所插入的字符串,字符串会插入在index位置。设计程序时可以使用这个方法为文本框建立默认的文字,通常会将它放在Entry( )方法建立完文本框后。

5.5 Entry的delete()方法

在tkinter模块的应用中可以使用delete(first,last=None)方法删除Entry内的从第first字符到第last-1字符间的字符串,如果要删除整个字符串可以使用delete(0,END)。

5.6 计算数学表达式使用eval()

python内有一个非常好用的计算机数学表达式函数eval,该函数可以直接传回此函数数学表达式的计算结果,可以使用eval制作快速计算器。

6. Radiobutton选项按钮

语法格式如下

Radiobutton(父对象,options, ...)

Radiobutton( )方法的第一个参数是父对象,表示这个选项按钮将建立在哪一个父对象内。下列是Radiobutton( )方法内其他常用的options参数。

(1)activebackground:鼠标光标在选项按钮上时的背景颜色。
(2)activeforeground:鼠标光标在选项按钮上时的前景颜色。
(3)anchor:如果空间大于所需时,控制选项按钮的位置,默认是CENTER。
(4)bg:标签背景或indicator的背景颜色。
(5)bitmap:位图图像对象。
(6)borderwidth或bd:边界宽度默认是两个像素。
(7)command:当用户更改选项时,会自动执行此函数。
(8)cursor:当鼠标光标在选项按钮上时的光标形状。
(9)fg:文字前景颜色。
(10)font:字形。
(11)height:选项按钮上的文字有几行,默认是1行。
(12)highlightbackground:当选项按钮取得焦点时的背景颜色。
(13)highlightcolor:当选项按钮取得焦点时的颜色。
(14)image:图像对象,如果要建立含图像的选项按钮时,可以使用此参数。
(15)indicatoron:当此值为0时,可以建立盒子选项按钮。
(16)justify:当含多行文字时,最后一行文字的对齐方式。
(17)padx:默认是1,可设置选项按钮与文字的间隔。
(18)pady:默认是1,可设置选项按钮的上下间距。
(19)selectcolor:当选项按钮被选取时的颜色。
(20)selectimage:如果设置图像选项按钮时,可由此设置当选项按钮被选取时的不同图像。
(21)state:默认是state=NORMAL,若是设置DISABLE则以灰阶显示选项按钮表示暂时无法使用。
(22)text:选项按钮旁的文字。
(23)textvariable:以变量方式显示选项按钮文字。
(24)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
(25)value:选项按钮的值,可以区分所选取的选项按钮。
(26)variable:设置或取得目前选取的单选按钮,它的值类型通常是IntVar或StringVar。
(27)width:选项按钮的文字有几个字符宽,省略时会自行调整为实际宽度。
(28)wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。

绑定整组选项按钮方式如下:

var IntVar

rb1 = Radiobutton(tk, ... , variable=var, value=x1,...)
rb2 = Radiobutton(tk, ... , variable=var, value=x,...)

...

rbn = Radiobutton(tk, ... , variable=var, value=xn,...)

若想取得这组选项按钮所选的选项,可以使用get( )方法,这时会将所选选项的参数value的值传回,方法set( )可以设置最初默认的value选项。

from tkinter import *


def printSelection():
    label.config(text="你是" + var.get())


root = Tk()
root.title("ch7_2")  # 窗口标题
var = StringVar()  # 选项按钮绑定的变量
var.set("男生")  # 默认选项是男生
label = Label(root, text="这是默认值,尚未选择", bg="lightyellow", width=30)
label.pack()
rbman = Radiobutton(root, text="男生", variable=var, value="男生", command=printSelection)
rbman.pack()
rbwoman = Radiobutton(root, text="女生", variable=var, value="女生", command=printSelection)
rbwoman.pack()
root.mainloop()

字典也可以与选项按钮结合,应用在选项多的选项按钮

from tkinter import *


def Seletions(label):
    label.config(text=lans[var.get()])


tk = Tk()
lans = {0: "python", 1: "JAVA", 2: "C/C++", 3: "Javascript", 4: "C#"}
var = IntVar()  # 选项按钮绑定的变量
var.set(0)  
label = Label(tk, text="选择你最喜欢的计算机语言", bg="yellow", fg="blue", width=30)
label.pack()

for val, lan in lans.items():
    Radiobutton(tk, text=lan, variable=var, value=val, command=lambda: Seletions(label)).pack()

tk.mainloop()

7. Checkbutton复选框

语法格式如下

Checkbutton(父对象, options, ...)

Checkbutton( )方法的第一个参数是父对象,表示这个复选框将建立在哪一个父对象内。下列是Checkbutton( )方法内其他常用的options参数。
(1)activebackground:鼠标光标在复选框上时的背景颜色。
(2)activeforeground:鼠标光标在复选框上时的前景颜色。
(3)bg:标签背景或indicator的背景颜色。
(4)bitmap:位图图像对象。
(5)borderwidth或bd:边界宽度默认是两个像素。
(6)command:当用户更改选项时,会自动执行此函数。
(7)cursor:当鼠标光标在复选框上时的光标形状。
(8)disabledforeground:当无法操作时的颜色。
(9)font:字形。
(10)height:复选框中的文字有几行,默认是1行。
(11)highlightbackground:当复选框取得焦点时的背景颜色。
(12)highlightcolor:当复选框取得焦点时的颜色。
(13)image:图像对象,如果要建立含图像的选项按钮时,可以使用此参数。
(14)justify:当含多行文字时,最后一行文字的对齐方式。
(15)of f value:这是控制变量,默认若复选框未选取值是0,可以由此更改设置此值。
(16)onvalue:这是控制变量,默认若复选框未选取值是1,可以由此更改设置此值。
(17)padx:默认是1,可设置复选框与文字的间隔。
(18)pady:默认是1,可设置复选框的上下间距。
(19)relief:默认是relief=FLAT,可由此控制复选框外框。
(20)selectcolor:当复选框被选取时的颜色。
(21)selectimage:如果设置图像复选框,可由此设置当复选框被选取时的不同图像。
(22)state:默认是state=NORMAL,若是设置DISABLED则以灰阶显示复选框,表示暂时无法使用。如果鼠标光标在复选框上方表示ACTIVE。
(23)text:复选框旁的文字。
(24)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
(25)variable:设置或取得目前选取的复选框,它的值类型通常是IntVar或StringVar。
(26)width:复选框的文字有几个字符宽,省略时会自行调整为实际宽度。
(27)wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。

from tkinter import *

tk = Tk()

label = Label(tk, text="你最喜欢的计算机语言", bg="yellow", fg="blue", width=30)
label.grid(row=0)

var1 = IntVar()
cbtn1 = Checkbutton(tk, text="python", variable=var1)
cbtn1.grid(row=1, sticky=W)

var2 = IntVar()
cbtn2 = Checkbutton(tk, text="JAVA", variable=var2)
cbtn2.grid(row=2, sticky=W)

var3 = IntVar()
cbtn3 = Checkbutton(tk, text="C/C++", variable=var3)
cbtn1.grid(row=3, sticky=W)

tk.mainloop()

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值