前言
GUI在之前和今后的工作中都是十分重要的,寒假刚开始,趁着在跑模型(干跑…硬跑…),便不负责任地把它丢到一边,开始入门tkinter。
首先准备看看b站视频,发现莫凡也更了相关,下面先做一些相关笔记。
入门教程笔记
import
import tkinter as tk
window
一切基于窗口。
定义窗口:
window = tk.Tk() # create window
改变窗口名称:
window.title('my window') # change title
改变窗口的尺寸
window.geometry('1000x200') # size A(width)xB(height)
var
用于动态改变文本
var=tk.StringVar()
label
一个展示文本的东西
定义label
l = tk.Label(window,
text = 'hello my world', # 显示该text
textvariable = var, # 显示该var对应的文本,而var是可以变化的
bg = 'green', # background color
font=('Arial', 12),
width = 15,
height = 2)
- 如果要改变label展示出来的文本,我们可以改变var,一般:1. var可能是从其它部件中get()得到的,就比如有一个下面要讲的entity部件,它的作用是定义一个输入框。那么我们输入之后,通过var = entity.get()就可以改变var了。 2.var可能是人为set()的,就比如有一个下面要讲的button部件,点击它一下,就会触发一次函数中的command,那我们可以在command中,对var进行人为的set。(两个例子下面会给)
- text其实也不是固定的,可以通过label.confit(text=…)来对其进行修改
button
即按钮,每一次点击,会触发一次内部定义的command
定义button
b = tk.Button(window,
text='hit me', # 按钮上的文本
width=15,
height=2,
command = hit_me,# a function which will run when you hit the botton
) # create a botton on window
定义command(hit_me)
on_hit = False # hit flag
def hit_me():
global on_hit
if on_hit == False:
on_hit = True
var.set("you hit me") # 这里就是上面说的改变var的第二种方式(var.set())
else:
on_hit = False
var.set("")
radiobutton
和button差不多,一旦点击,除了command function以外,还可以改变var的功能(variable=…, value=…)
r1 = tk.Radiobutton(
master=window,
text='Option A', # 该button上面的文本
###### if you choose Option A,var will be 'A'
variable=var, # 需要被修改的var
value='A', # 修改成什么
######
command=print_selection
)
text
也是一个展示文本的地方,但和label不太一样,它的灵活度更高吧
定义text
t = tk.Text(
master=window,
height=2
)
插入文本到光标位置
t.insert('insert',var) # "insert"代表以插入到光标位置的方式插入, var上面介绍过
插入文本到末尾
t.insert('end',var)
插入文本到指定行指定列
def insert_sp():
var = e.get() # get text from Entry
t.insert(1.1 ,var)
entity
跟text差不多,把它理解为 一般登录界面中的输入框!
定义entity
e = tk.Entry(master=window,
show = "*" # \ '*'
)
这里的show=“*”,用于输入密码的时候,展示给用户的都是星号。
改变var的第一种方式(get()):输入文本至entity框,然后 entity.get()改变var
var = entity.get()
Listbox
给定一连串的选项,然后用光标去选择。
定义Listbox
var2 = tk.StringVar()
var2.set((11,22,33,44)) # 先初始化部分选项
lb = tk.Listbox(
master = window,
listvariable = var2
)
更新Listbox的选项——insert
list_items = [1,2,3,4]
for item in list_items:
lb.insert('end', item) # end:末尾
lb.insert(1,'hello') # 1 第一行
lb.insert(2,'world')
更新Listbox的选项——delete
lb.delete(2)
获取用户选择了Listbox提供的选项中的哪一个
value = lb.get(Listbox.curselection()) # 光标位置
scale
滑动条
定义scale
s = tk.Scale(
master=window,
label='try me', # title
from_ = 5, # from...to...
to = 10,
orient = tk.HORIZONTAL,
length = 200,
showvalue = 0, # default = 0
tickinterval = 1, # interval
resolution = 1, # 0.01 两位小数; 1 整数
command = print_selection # 默认有传入值:selected value
)