Tkinter
是使用 python 进行窗口视窗设计的模块. 简单的构造, 多平台, 多系统的兼容性, 能让它成为让你快速入门定制窗口文件的好助手。它在 python 窗口视窗模块中是一款简单型的,所以用来入门、熟悉窗口视窗的使用, 非常有必要。
1、Label & Button 标签和按钮
Label
import tkinter as tk
# 定义 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:
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x100')
# 定义点击按钮时,执行的命令
on_hit = False
def hit_me():
global on_hit
if on_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 输入,文本框
import tkinter as tk
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 列表部件
import tkinter as tk
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]
for item in list_items:
lb.insert('end', item)
lb.insert(1, 'first')
lb.insert(2, 'second')
lb.delete(2)
lb.pack()
# 激活窗口
window.mainloop()
4、Radiobutton 选择按钮
import tkinter as tk
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 尺度
import tkinter as tk
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=0, 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。
网友评论