作者丨Yarkona_Wang
https://www.jianshu.com/p/b95001486740
Tkinter是使用 python 进行窗口视窗设计的模块. 简单的构造, 多平台, 多系统的兼容性, 能让它成为让你快速入门定制窗口文件的好助手。它在 python 窗口视窗模块中是一款简单型的,所以用来入门、熟悉窗口视窗的使用, 非常有必要。
1、Label & Button 标签和按钮
Label
importtkinterastk
# 定义 window 窗口
window= tk.Tk()
# 定义 window 的一些属性
window.title('my window')
window.geometry('200x100')
# 书写窗口内容
# 建立一个用来描述的标签 tk.Label
l = tk.Label(window,
text ='OMG! This is TK!',
bg ='green',
font = ('Arial',12),
width =15,
height =2
)
l.pack()
# 激活窗口
window.mainloop()
Button
也可以通过变量的形式控制标签的显示, 引入按钮 tk.Button 的概念, 每点一次按钮, 标签变化一次. 用一下内容替换上面的标签. 并把需要变化的文字存成变量 var:
importtkinterastk
window= tk.Tk()
window.title('my window')
window.geometry('200x100')
# 定义点击按钮时,执行的命令
on_hit = False
def hit_me():
global on_hit
ifon_hit == False:
on_hit = True
var.set('you hit me')
else:
on_hit = False
var.set('')
# 设置 Label
var= tk.StringVar()
l = tk.Label(window,
textvariable =var,
bg ='green',
font = ('Arial',12),
width =15,
height =2
)
l.pack()
# 设置 Button
b = tk.Button(window,
text ='hit me',
width =15,
height =2,
command = hit_me
)
b.pack()
window.mainloop()
2、Entry & Text 输入,文本框
importtkinterastk
window= tk.Tk()
window.title('my window')
window.geometry('200x200')
# 创建按钮分别触发两种情况
def insert_point():
var= e.get()
t.insert('insert',var)
def insert_end():
var= e.get()
t.insert('end',var)
b1 = tk.Button(window, text ='insert point',
width =15, height =2,
command = insert_point)
b1.pack()
b2 = tk.Button(window, text ='insert end',
width =15, height =2,
command = insert_end)
b2.pack()
# 创建输入框 entry,用户输入任何内容都显示为 *
e = tk.Entry(window, show ='*')
e.pack()
t = tk.Text(window, height =2)
t.pack()
# 激活窗口
window.mainloop()
测试一下
第一次:在entry中输入tkinter,在text中输入0000并将光标定位在中间位置,点击insert point
第二次:点击insert end
3、Listbox 列表部件
importtkinterastk
window= tk.Tk()
window.title('my window')
window.geometry('200x200')
# 创建一个 label 用于显示
var1 = tk.StringVar()
l = tk.Label(window, bg ='yellow', width =4, textvariable = var1)
l.pack()
# 创建一个方法,用于按钮的点击事件
def print_selection():
value = lb.get(lb.curselection())# 获取当前选中的文本
var1.set(value)# 为 label 设置值
b1 = tk.Button(window, text ='print selection',
width =15, height =2,
command = print_selection)
b1.pack()
# 创建一个 Listbox 和变量 var2,并将 var2 的值赋给 Listbox
var2 = tk.StringVar()
var2.set((11,22,33,44))
lb = tk.Listbox(window, listvariable = var2)
# 创建一个 list 并将值循环添加到 Listbox 控件中
list_items = [1,2,3,4]
foriteminlist_items:
lb.insert('end', item)
lb.insert(1,'first')
lb.insert(2,'second')
lb.delete(2)
lb.pack()
# 激活窗口
window.mainloop()
4、Radiobutton 选择按钮
importtkinterastk
window= tk.Tk()
window.title('my window')
window.geometry('200x200')
# 该功能用来对选择的 radiobutton 进行操作.
# print_selection 功能就是选择了某个 radiobutton 后会在屏幕上打印的选项.
def print_selection():
l.config(text='you have selected '+var.get())
# 首先定义一个var用来将 radiobutton 的值和 Label 的值联系在一起
# 然后创建一个radiobutton部分:
var= tk.StringVar()
l = tk.Label(window, bg='yellow', width=20, text='empty')
l.pack()
r1 = tk.Radiobutton(window, text ='Option A',
variable =var, value ='A', # 代表:当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable
command = print_selection)
r1.pack()
r2 = tk.Radiobutton(window, text='Option B',
variable=var, value='B',
command=print_selection)
r2.pack()
r3 = tk.Radiobutton(window, text='Option C',
variable=var, value='C',
command=print_selection)
r3.pack()
# 激活窗口
window.mainloop()
5、Scale 尺度
importtkinterastk
window= tk.Tk()
window.title('my window')
window.geometry('200x200')
# 触发功能
l = tk.Label(window, bg='yellow', width=20, text='empty')
l.pack()
def print_selection(v):
l.config(text='you have selected '+ v)
# scale 部件
s = tk.Scale(window, label='try me', from_=5, to=11, orient=tk.HORIZONTAL,
length=200, showvalue=, tickinterval=2, resolution=0.01, command=print_selection)
s.pack()
# 激活窗口
window.mainloop()
Scale 参数详解:
参数label是指scale部件的名称,即在这里scale部件名称为try me
参数from_=5,to=11的意思就是从5到11,即这个滚动条最小值为5,最大值为11(这里使用from_是因为在python中有from这个关键词)
参数orient=tk.HORIZONTAL在这里就是设置滚动条的方向,如我们所看到的效果图,这里HORIZONTAL就是横向。
参数length这里是指滚动条部件的长度,但注意的是和其他部件width表示不同,width表示的是以字符为单位,比如width=4,就是4个字符的长度,而此处的length=200,是指我们常用的像素为单位,即长度为200个像素
参数resolution=0.01这里我们可以借助数学题来理解,我们做的很多数学题都会让我们来保留几位小数,此处的0.01就是保留2位小数,即效果图中的5.00 9.00等等后面的两位小数,如果保留一位就是resolution=0.1 这里的showvalue就是设置在滚动条上方的显示。
参数showvalue=0显示的就是效果图,上方无结果显示,如果改为showvalue=1,则会显示为指定信息。
参数tickinterval设置的就是坐标的间隔,此处为tickinterval=2,显示的即为效果图中的5.00 7.00 9.00 11.00 如果改为tickinterval=3则为5.00 8.00 11.00。
6、Checkbutton 勾选项
7、Canvas 画布
8、Menubar 菜单
9、Frame 框架
10、messagebox 弹窗
11、pack grid place 放置位置
推荐↓↓↓
领取专属 10元无门槛券
私享最新 技术干货