Hello TKinter ! [序章]
同学们好,这一次我们来学习一下Python中的基础库:TKinter.
也是Python中常用的几个GUI界面之一,学习到现在,我们已经对着枯燥的编辑器界面很久了,也该是运用所学知识,创建一个可操作化界面的时候啦~
创建一个基础窗口
-
为本窗口起一个名字[程序中的名字,即对象名]:
# 实例化Tk对象,创建窗口,窗口名为左边对象名 window_name = tk.Tk()
-
为窗口起一个标题[前端界面显示的名字,即窗口标题名]:
# 设置窗口标题 window_name.title('Mr.Liang')
-
设置窗口的尺寸:
# 中间x为小写字母X,左宽度右长度 window_name.geometry('200x300')
-
窗口运行:
# window 会不断的刷新刷新 相当于一个很大的while循环 循环一次就会更新一次数据 所有窗口文件都会有一个类似于 mainloop()这样的方法 window_name.mainloop()
常见界面元素:Label标签和Button按钮
-
Label标签 , 中文译名 : “标签”
-
创建方式:
# 创建名为"label_name"的标签 label_name = tk.Label()
-
Label Object参数一览:
-
所属窗口:填写需要放进的窗口名即可,此demo中为"window_name"
label_name = tk.Label(window_name)
-
标签内所显示文本[text / textvariable]:
两种方法:
-
固定的值:text = ‘文本’
-
textvariable参数,用于接收变量,使内部的文本可控制进行变化,定义变量的方式如下
var = tk.StringVar()
# 固定文本 label_name = tk.Lable(window_name , text = 'this is a Label') # 传参 var 为变量名 label_name = tk.Label(window_name , textvariable = var)
-
-
背景颜色[bg]
label_name = tk.Label(window_name , text = 'this is a label' , bg = 'green')
-
字体[font]
label_name = tk.Label(window_name , text = 'this is a label' , bg = 'green' , font = ('Arial',12))
-
宽,高[width , height]
# 以字符为单位,比如高为2 则为2个字符的高度 label_name = tk.Label(window_name , text = 'this is a label' , bg = 'green' , font = ('Arial', 12) , width = 15 , height = 6)
-
-
Label 标签放置方式[pack]
label_name.pack()
-
-
Button标签,中文译名 : “按钮”
-
创建方式:
button_name = tk.Button()
-
Button Object 参数一览:
-
所属窗口:填写所属窗口的对象名即可,此demo中为 : window_name
button_name = tk.Button(window_name)
-
按钮内所显示文本内容[text / textvariable]
类似于Label标签,文本参数有两种参数:
-
text 用来存放固定的值,无法修改
-
textvariable用来存放变量,变量定义方法为:
var = tk.StringVar()
# 第一种方式 text button_name = tk.Button(window_name , text = 'this is a Button') # 第二种方式 textvariable button_name = tk.Button(window_name , textvariable = var)
-
-
其中"bg" “font” “width” “height” 与 Label 标签用法完全一致
-
点击后执行的函数[command]
# 点击后执行的函数名为 : hit_me() 此方法需要提前定义好 button_name = tk.Button(window_name,command = hit_me)
函数的定义:
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('you not hit me')
-
-
Button 按钮放置方法[pack]
button_name.pack()
-
实战代码
import tkinter as tk
window_name = tk.Tk()
window_name.geometry('300x200')
var_label = tk.StringVar()
var_button = tk.StringVar()
label_name = tk.Label(window_name , textvariable = var_label , font = ('Arial',12) , bg = 'green' , width = 20 , height = 6)
label_name.pack()
if_hit = False
def hit_me():
global if_hit
if if_hit == False:
var_label.set('you hit me !')
var_button.set('yes')
if_hit = True
else:
var_label.set('you do not hit me !')
var_button.set('of course')
if_hit = False
button_name = tk.Button(window_name , textvariable = var_button , width = 12 , height = 2 , command = hit_me)
button_name.pack()
window_name.mainloop()
urse')
if_hit = False
button_name = tk.Button(window_name , textvariable = var_button , width = 12 , height = 2 , command = hit_me)
button_name.pack()
window_name.mainloop()