安装
tkinter库:用于制作可视化的窗口
pyinstaller:直接在cmd中运行,用于打包py
pip install tk ##安装
python -m tkinter #检查是否安装
pip install -i pyinstaller https://pypi.tuna.tsinghua.edu.cn/simple/
pip install -i tkinter https://pypi.tuna.tsinghua.edu.cn/simple/
检查安装
import tkinter as tk
from tkinter import *
import tkinter
print(tkinter.TkVersion)
- Label:标签控件,用来在窗口上显示文本和图片
- Message:消息控件,用来显示多行文本,与Label功能类似
- Button:按钮控件,用户可以点击按钮,点击事件将会传递给设置的回调函数
- Entry:文本输入框控件,用户可以输入文字,但只能在一行输入
- Text:多行文本输入框控件,用户可以输入多行文字,自由换行
- Canvas:画布控件,可以在上面显示基本图形、文字、图片
- Frame:框架控件,作为一个小容器,相当于给组件分组。
- LabelFrame:文字框架控件,和Frame不同的是,框架外面多了文本提示
- Menu:菜单控件,在窗口上显示菜单,或定义弹出式菜单。
- Menubutton:菜单按钮控件,是Button的样子,点击后弹出一个菜单。
- Checkbutton:多选按钮,用户可以勾选或取消勾选。
- Radiobutton:单选按钮,用户可以在同类的Radiobutton中选择一个,无法取消勾选
- Listbox:列表框组件,可以显示一个字符串的列表
- Scrollbar:滚动条控件,用来添加一个滚动条控制滚动
- Scale:尺度条控件,用来添加一个数字滑块,用户可以滑动调整数值。
- Spinbox:数字选值框控件,用户既可以输入数字,也可以按调节按钮调整数值。
- OptionMenu:选项菜单,用户可以从下拉菜单中选择一个值,但是不能自己输入。
- PanedWindow:分栏容器控件,和Frame类似,但是有更多的功能设定,比如用户可以调节大小
- Toplevel:上层窗口控件,可以定义某个窗口的子窗口。
Button
- 1. 自定义button
# 创建一个自定义样式的按钮
custom_button = tk.Button(
root,
text="自定义按钮", ##按钮文本内容
font=("Helvetica", 14), # 设置字体和字号
bg="green", # 设置背景颜色
fg="white", # 设置前景颜色(文本颜色)
command=custom_function # 设置按钮点击时的响应函数,要执行哪个函数
)
# 将自定义按钮添加到窗口
custom_button.pack()
height 按钮高度
width 按钮宽度
padx 按钮横向内边距,按钮内容与按钮的边框间距
pady 按钮纵向内边距,按钮内容与按钮的边框间距
command 点击按钮时执行的函数
bd 按钮边框大小;边框会呈现立体感
activebackground 鼠标点击时按钮背景色
activeforeground 鼠标点击去时按钮前景色
# -*- coding:utf-8 -*-
import tkinter as tk
root = tk.Tk()
# 创建按钮,并设置按钮的背景色和前景色
root.title("my Windows") ##窗口标题名字
root.geometry('250x350') ##窗口尺寸
root.resizable(False, False) ##如果有这个,说明窗口不能通过鼠标改变大小,正常这个函数不要
btn1 = tk.Button(root,text='测试按钮1',bg='white',fg='green',padx=30,pady=20,anchor="center") ##创建按钮,并设置按钮的字体、大小和对齐方式
btn1.pack() ##pack()方法将按钮添加到窗口中,会根据窗口的大小和内容自动调整按钮的位置
btn2 = tk.Button(root,text='测试按钮3',bd='10') ##立体按钮
btn2.pack()
btn3 = tk.Button(root, text='退出', command=root.quit)
btn3.pack()
btn4 = tk.Button(root,text='测试按钮2',activebackground='blue',activeforeground='red')
btn4.pack()
root.mainloop() ##可以让窗口循环显示,这个函数要有,否则运行时窗口一闪就没了
Label
text 显示的文本
font 文本的字体
image 显示的图片
padx 标签内容与左右的间距
pady 标签内容与上下的间距
anchor 文本靠标签哪个方向显示,可以是n,s,w,e,ne,nw,sw,se,center,即北、南、西、东、东北、西北、西南、东南、中间,默认靠中间显示
justify 文本的对齐方式,可以是left, right, center,默认是center
共有bold(加粗), italic(斜体),underline(下划线),overstrike(删除线)几种
# -*- coding:utf-8 -*-
import tkinter as tk
root = tk.Tk()
# 创建按钮,并设置按钮的背景色和前景色
root.title("my Windows")
root.geometry('250x350')
root.resizable(False, False)
lab = tk.Label(root, text="Hello, Tkinter!",font=("黑体", 20, "bold", "italic", "underline", "overstrike"))
lab.pack()
btn1 = tk.Button(root, text='退出', command=root.quit)
btn1.pack()
root.mainloop()
布局管理(pack,grid,place)
#######方式一
###八个方位和中心(n, s, w, e, nw, ne, sw, se, center),默认是"nw"
w1 = Button(root, text="多余空间靠左")
w1.pack(anchor="w")
######方式二
w1 = Button(root, text="Hello")
w1.pack(padx=50, pady=30) #左右间隔50,上下间隔30
w1 = Button(root, text="Hello")
w1.pack(padx=(50, 40), pady=(30, 60)) #左间隔50,右间隔40,上间隔30,下间隔60
#####方式三
Button(root, text="0行0列").grid(row=0, column=0)
Button(root, text="1行0列").grid(row=1, column=0)
Button(root, text="0行1列").grid(row=0, column=1)
Button(root, text="1行1列").grid(row=1, column=1)
Entry
Entry是一个文本框组件,用户可以在里面输入文本
# -*- coding:utf-8 -*-
import tkinter as tk
root = tk.Tk()
# 创建按钮,并设置按钮的背景色和前景色
root.title("my Windows")
root.geometry('250x350')
root.resizable(False, False)
ent = tk.Entry(root)
ent.pack()
def printget():
print(ent.get())
tk.Button(root, text="获取输入", command=printget).pack()
root.mainloop()
####规定一个变量,便可以把输入的文字存储为变量
ret = simpledialog.askstring(title = '输入',prompt='请输入word绝对路径或相对路径')
#####将输入框得内容传递给变量
# -*- coding:utf-8 -*-
import tkinter as tk
root = tk.Tk()
# 创建按钮,并设置按钮的背景色和前景色
root.title("my Windows")
root.geometry('250x350')
AA_var = tk.StringVar() # 创建一个StringVar类型的变量来存储Entry的内容
entry = tk.Entry(root, textvariable=AA_var)
entry.pack()
btn1 = tk.Button(root, text='退出', command=root.quit)
btn1.pack()
root.mainloop()
BBBB = AA_var.get()
print(BBBB)