1.标签控件

要编写好具有用户界面的窗口程序,文字输入输出部分时不可或缺的一环。在tkinter中,用于文字输出的常用基本控件时标签(Label),即所谓的文字标签。文字标签主要的功能时用来显示用户所要了解的文字和语句。

标签控件是一个非交互式的控件,只能显示文字,鼠标点击不会触发任何事件。创建标签控件的语法如下:

控件名称 = tk.Label(容器名称,参数)

容器名称是指父类的容器,也就是上一层的容器。当创建了一个控件后,就可以指定前景颜色、字体以及宽和高等参数,参数之间用英文”,”分隔,常用参数如下:

参数 说明
height 设置高度
width 设置宽度
text 设置标签上要显示的文字
font 设置字体及字体大小
fg 设置字体颜色
bg 设置背景颜色
padx 与容器边框的水平间距
pady 与容器边框的垂直间距
anchor 文字位置,设置值有下列9种。center:正中心 n,s,e,w:上方中间、下方中间、右方中间、左方中间 ne,nw,se,sw:右上角、左上角、右下角、左下角
borderwidth 设置边框线的宽度,可以“bd”代替
bitmap 标签指定的位图图像
image 标签指定的图像或图片
justify 标签有多行文字的对齐方式

一般来说,要设置字体,会以元组来表示font元素,如下:

font = ('Verdana',14,'bold','italic')

元组包括字体名称、字体大小、字体是否要加入粗体或斜体效果。除了字体大小之外,其他参数都要以字符串的形式设置。

指定颜色可以使用颜色名称(red,yellow,green,blue,white,black)或使用十六进制颜色代码,如#ff0000

创建控件的同时必须指定布局方式,例如要将标签控件指定按pack方法排列

import tkinter as tk
win = tk.Tk()
win.geometry('200x100')
win.title('常用控件')
label = tk.Label(win,bg = '#ffff00',fg='#ff0000',font =('微软雅黑',15,'bold'),padx=20,pady=5,text='这是一个标签控件')
label.pack()
win.mainloop()

2.按钮控件

按钮控件是与用户交互不可或缺的控件,按钮控件主要应用于指令的下达或功能的区分。当用户单击按钮时会触发click事件,接着系统会调用对应的事件处理函数。创建按钮事件的语法如下:

控件名称 = tk.Button(容器名称,参数)

常用的参数与标签控件一样,都具有颜色与字体等外观设置,按钮控件多了一个command参数,这个参数用来设置点击按钮时要调用的事件处理函数。

参数 说明
height 设置高度
width 设置宽度
text 设置按钮上的文字
font 设置字体及字体大小
textvariable 设置文字变量
fg 设置文字颜色
bg 设置背景颜色
padx 与容器边框的水平间距
pady 与容器边框的垂直间距
command 事件处理函数

每一个按钮控件同样要指定它的版面布局方式。下面的实例中放置了两个按钮,当单击按钮1时会更换按钮上显示的文字,单击按钮2时会更换按钮上文字的颜色。

import tkinter as tk
win = tk.Tk()
win.geometry('200x100')
win.title('Button')


def btn_click():
    btnvar.set('单击了按钮1')


def btnl_click():
    btn1.config(fg='red')


btnvar = tk.StringVar()
btn = tk.Button(win, textvariable=btnvar, command=btn_click)
btnvar.set('这是按钮1')
btn.pack(padx=20, pady=10)

btn1 = tk.Button(win, text='这是按钮2', command=btnl_click)
btn1.pack(padx=20, pady=10)


win.mainloop()

按钮1的command参数指定的函数是btn_click,按钮2的command参数指定的函数是btn1_click,因此当单击按钮时会调用指定的函数。

当需要改变控件上的文字内容或变更属性(文字颜色、背景色、宽、高、字体等)时,有两种做法,以上面的示例按钮为例

1.通过textvariable参数指定文字变量

如果想变更控件的文字,我们可以吧文字变量赋值给textvariable属性,这样textvariable属性就会建立文字变量与text属性的连接,当文字变量变更时,控件上的文字也就跟着变了。不过文字变量的值必须是tkinter的IntVar(整数)、DoubleVar(浮点数)StringVar(字符串)对象,再通过对象的get()与set()方法存取文字变量的内容。

2.调用config方法更改文字的内容或属性

config方法可用于修改控件的属性值,格式如下:

控件名称.config(属性名称=属性值)

# 如
btn.config(fg = 'red') # 将btn的文字颜色设为红色
btn.config(text='这是按钮1') # 更改text属性

# 打印config()当前属性
print(btn.config())

当控件通过textvariable属性设置了文字变量,text属性就与文字变量建立了连接,在这种情况下,无法通过config()方法修改text属性值。

3.文本编辑控件

文本编辑(Entry)控件可用于让用户输入文字,它是单行模式。创建Entry控件的语法如下:

控件名称 = tk.Entry(容器名称,参数)

Entry控件的常用参数如下:

参数 说明
height 设置高度
width 设置宽度
font 设置字体及字体大小
fg 设置文字颜色
bg 设置背景颜色
padx 与容器边框的水平间距
pady 与容器边框的垂直间距
borderwidth 设置边框宽度
relief 设置边框的浮雕效果,设置有flag,groove,raised,ridge,sunken,solid
justify 文字对齐方式,设置有left,right,center,默认值为left
state Entry控件的状态,设置有normal(常规),readonly(只读),disabled(禁用)

如果要输入Entry控件的默认值,可以调用insert方法:

entry.insert(下标值,默认文字)

下标值是指字符串中的下标位置,可以数字或是字符串”end”。下标从0开始,假如Entry控件中有文字”beauty”,那么字母b的下标值就是0,当下标值小于或等于0时,插入点就在开始处;如果下标值大于或等于当前的字符数,插入点就在字符串的末尾。如果要获取字符串最末端的位置,就可以使用值”end”。

import tkinter as tk

win = tk.Tk()
win.title('Entry')

entry = tk.Entry(win,bg ='gray',font =('Helvetica',14),bd = 3)
entry.pack(padx =20,pady =10)
entry.insert(0,'这是Entry')
entry.insert(2,'实用的')
entry.insert('end',',真好玩')

win.mainloop()

要删除Entry控件中的文字,可以调用delete()方法,格式如下

entry.delete(起始下标,结束下标)
# 如

entry.delete(0,2) # 删除前面两个字符
entry.delete(3,'end') # 删除第三个字符之后的字符
entry.delete(0,'end') #  删除全部字符

4.多行文字控件

多行文字(Text)控件用来存储或显示多行文字,属性和Entry控件大多相同。Text控件支持纯文本或格式文件,也可用于文本编辑器。语法如下:

控件名称 = tk.Text(容器名称,参数1,参数2,...)

常用参数如下:

参数 说明
height 设置高度
white 设置宽度
font 设置字体及大小
fg 设置文字颜色
bg 设置背景颜色
padx 与容器边框的水平间距
pady 与容器边框的垂直间距
borderwidth 设置边框宽度
state 设置文字内容是否允许编辑,默认值为”tk.NORMAL”,表示可以编辑控件的文字内容;如果参数值为”tk.DISABLED”,表示禁止编辑文字内容

如果想在已创建的文本框中设置文字内容,需调用insert()方法

insert(下标值,默认文字)

创建text之后,如果想改变控件的参数设置,可以调用config()方法

控件名称.config(参数1,参数2,...)

在默认情况下,可以编辑控件的文字内容,如果禁止编辑可以将state参数设置为”tk.DISABLED”

import tkinter as tk

win = tk.Tk()
win.title('Entry')

text = tk.Text(win)
text.insert(tk.INSERT, 'Python的tk程序包真好玩\n')
text.insert(tk.END, '结束文本框的内容')
text.pack(padx=20,pady=20)
win.mainloop()

5.单选按钮控件

选项控件有两种Checkbutton(复选按钮)和Radiobutton(单选按钮)。创建Raidobutton的语法如下:

控件名称 = tk.Radiobutton(容器名称,参数1,参数2,...)

常用参数如下:

参数 说明
bg 设置背景颜色
fg 设置前景颜色
bd 设置边框粗细
font 设置字体
height 控件高度
width 控件宽度
justify 有多行文字时的对齐方式
text 空间中的文字
varibale 控件所连接的变量
padx 控件与容器的水平距离
pady 控件与容器的垂直距离
value 设置用户单击后的选择值
conmmand 设置单击后要执行的函数

实例:

import tkinter as tk

win = tk.Tk()
win.title('RaidoButton')

# 定义方法用来响应单击按钮的command属性,调用get()方法显示哪一个按钮选中了
def myOptions():
    print('你的选择是:', var.get())


ft = ('微软雅黑', 12)
tk.Label(win, text='选择喜欢的颜色', font=ft, justify=tk.LEFT, padx=20).pack()

color = [('红色', 1), ('绿色', 2), ('蓝色', 3)]
# 将单选按钮被选中的控件以Intvar()方法转为数值,调用set()方法设置第一个选项为默认值
var = tk.IntVar()
var.set(1)
# for循环创建按钮并读取color中的元素
for item, val in color:
    tk.Radiobutton(win, text=item, value=val, font=ft, variable=var,
                   padx=15, command=myOptions).pack(anchor=tk.W)

tk.mainloop()

6.复选按钮控件

Checkbutton(复选按钮)控件用于设计从列出的多个选项中进行不同的选择,语法如下:

控件名称= tk.Checkbutton(容器,参数1,参数2,...)

常用参数如下:

参数 说明
anchor 文字对其方式
bg 设置背景色
fg 设置前景色
bd 设置边框粗细
relief 配合bd设置线框样式
bitmap 按钮上显示位图图像
font 设置字体
height 设置高度
width 设置宽度
justify 有多行文字时的对齐方式
text 控件中的文字
onvalue/offvalue 控件选中/未选中后所连接的变量值
variable 控件所连接的变量

一般来说,Checkbutton控件有”已勾选”和”未勾选”两种状态
– 已勾选:用默认是1表示,使用属性onvalue更改其值
– 未勾选: 用0表示,使用属性offvalue更改其值

Checkbutton控件的变量可调用IntVar()和StringVar()方法来处理数值和字符串的问题。

import tkinter as tk

win = tk.Tk()
win.title('复选按钮控件')


# 响应Checkbutton控件的变量状态
def varStates():
    print('选择科目有:', var1.get(), var2.get(), var3.get())


ft = ('微软雅黑', 14)
lb1 = tk.Label(win, text='科目', font=ft)
lb1.grid(row=0, column=0)

item1 = '数学'
var1 = tk.StringVar()
chk = tk.Checkbutton(win, text=item1, font=ft, variable=var1, onvalue=item1, offvalue='')
chk.grid(row=0, column=1)

item2 = '计算机'
var2 = tk.StringVar()
chk2 = tk.Checkbutton(win, text=item2, font=ft, variable=var2, onvalue=item2, offvalue='')
chk2.grid(row=0, column=2)

item3 = '英语'
var3 = tk.StringVar()
chk3 = tk.Checkbutton(win, text=item3, font=ft, variable=var3, onvalue=item3, offvalue='')
chk3.grid(row=0, column=3)

btnQuit = tk.Button(win, text='离开', font=ft, command=win.destroy)
btnQuit.grid(row=2, column=1, pady=4)

btnShow = tk.Button(win, text='显示', font=ft, command=varStates)
btnShow.grid(row=2, column=2, pady=4)

tk.mainloop()

7.滚动条控件

滚动条(Scrollbar)常被用于Text、列表框(Listbox)或画布(Canvas)等控件中。语法如下:

Scrollbar(父对象,参数1 = 设置值1,参数2 = 设置值2,...)

常用参数如下:

参数 说明
activebackground 设置移动滚动条时滚动条与箭头的颜色
bg 设置背景色
bd 设置边框粗细
command 移动滚动条时会调用此参数所指定的函数
highlightbackground 突出显示的背景颜色
highlightcolor 突出显示的颜色
orient 默认值=VERTICAL,代表垂直滚动,HORIZONTAL代表水平滚动
width 控件宽度
from tkinter import *

win = Tk()
scrollbar = Scrollbar(win)
# 调用pack()方法将滚动条从右向左排列,fill=Y表示控件的高度与父对象的高度相同。如果让控件的宽度与父对象的宽度相同,设置fill=X
scrollbar.pack(side=RIGHT, fill=Y)
# 将列表控件的yscrollcommand可选参数设置为scrollbar.set,表示将滚动条连接到列表框控件
test_list = Listbox(win, yscrollcommand=scrollbar.set)
# 使用循环将当前所在的行数显示在列表框中
for line in range(20):
    test_list.insert(END, '当前所在行数:' + str(line + 1))

test_list.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=test_list.yview)
mainloop()

发表评论

电子邮件地址不会被公开。 必填项已用*标注