MV-python基础系列之窗口视窗Tkinter

作者丨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 放置位置

推荐↓↓↓

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181206B1ELJB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券