目录
1.主框架
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
root.mainloop()
2.标签 变量
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
# 标签
l1 = tk.Label(root, text='Label1', bg='green', font=('Arial', 12), width=15, height=2)
l1.pack(expand=True, side='top')
l1.config(text='Hello', bg='yellow')
# 标签内容设为变量
var = tk.StringVar()
l2 = tk.Label(root, textvariable=var, bg='red', font=('Arial', 12), width=15, height=2)
l2.pack(expand=True, side='top')
var.set('Label2')
root.mainloop()
3.输入框 文本框 按钮
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
def hit_me():
# 从输入框获取内容
var = e.get()
# 在文本框光标处输入内容
t.insert('insert',var)
# 向文本框末尾处输入内容
t.insert('end',var)
# 输入框设置输入内容显示为*
e = tk.Entry(root, show='*')
e.pack()
# 文本框
t = tk.Text(root, width=15, height=2)
t.pack()
# 按钮
b = tk.Button(root, text='hit me', width=15, height=2, command=hit_me)
b.pack()
root.mainloop()
4.Listbox长条形选择框
import tkinter as tk
import tkinter.messagebox as msg
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
def add_item():
var = e.get()
lb.insert('end', var) # 在末尾插入
lb.insert(0, 'first') # 在最上面插入
def del_item():
# 删除第二个位置的字符
lb.delete(lb.curselection())
def show_item():
# 获取Listbox光标值
var = lb.get(lb.curselection())
# 弹窗消息
msg.showinfo(title='Hello', message=var)
var = tk.StringVar()
var.set(('Tom','Mary','Jack'))
lb = tk.Listbox(root, listvariable=var)
lb.pack()
e = tk.Entry(root)
e.pack()
b1 = tk.Button(root, text='增加', width=15, height=2, command=add_item)
b1.pack(side='left')
b2 = tk.Button(root, text='删除', width=15, height=2, command=del_item)
b2.pack(side='left')
b3 = tk.Button(root, text='Show', width=15, height=2, command=show_item)
b3.pack(side='right')
root.mainloop()
5.Radiobutton圆形选择框
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
# 选中时把value的值A放到变量var中
var = tk.StringVar()
var.set('A')
r1 = tk.Radiobutton(root, text='Option A', variable=var, value='A')
r1.pack()
r2 = tk.Radiobutton(root, text='Option B', variable=var, value='B')
r2.pack()
print(var.get())
root.mainloop()
6.Checkbutton勾选项
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
# 选中时onvalue的值1放到变量var中
var = tk.StringVar()
var.set(0)
c = tk.Checkbutton(root, text='Python', variable=var, onvalue=1, offvalue=0)
c.pack()
print(var.get())
root.mainloop()
7.Scale滑动选择框
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
var = tk.IntVar()
s = tk.Scale(root, label='try me', from_=5, to=11, orient=tk.HORIZONTAL,
length=200, showvalue=1, tickinterval=2, resolution=0.01,
variable=var)
s.pack()
print(var.get())
root.mainloop()
8.Canvas画布
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
# 横坐标移动0个单位,纵坐标移动2个单位
def moveit():
canvas.move(rect, 0, 2)
canvas = tk.Canvas(root, bg='blue', height=400, width=300)
canvas.pack()
# 加载图片
image_file = tk.PhotoImage(file='1.png')
# 在画布上添加图片
image = canvas.create_image(10, 10, anchor='nw', image=image_file)
# 从坐标(50,50)到(80,80)画一条直线
x0, y0, x1, y1= 50, 50, 80, 80
line = canvas.create_line(x0, y0, x1, y1)
# 画一个圆
oval = canvas.create_oval(x0, y0, x1, y1, fill='red')
# 画一个扇形
arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=180)
# 画一个矩形
rect = canvas.create_rectangle(100, 30, 100+20, 30+20)
b = tk.Button(root, text='move', command=moveit).pack()
root.mainloop()
9.弹窗
import tkinter as tk
import tkinter.messagebox as msg
import tkinter.filedialog as fd
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
###########################################
msg.showinfo(title='Hi', message='INFO')
msg.showwarning(title='Hi', message='WARNING')
msg.showerror(title='Hi', message='ERROR')
# return 'yes' , 'no'
msg.askquestion(title='Hi', message='ask1')
# return True, False
msg.askyesno(title='Hi', message='ask2')
# return True, False
msg.askokcancel(title='Hi', message='ask3')
# return, True, False, None
msg.askyesnocancel(title="Hi", message="ask4")
# 文件选择框
fd.askopenfilename()
root.mainloop()
10.菜单
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
def do_job():
print("test")
# 创建菜单栏容器
menubar = tk.Menu(root)
# 创建空菜单
filemenu = tk.Menu(menubar, tearoff=0)
# 将空菜单添加至容器
menubar.add_cascade(label='File', menu=filemenu)
# 空菜单添加命令
filemenu.add_command(label='New', command=do_job)
filemenu.add_command(label='Open', command=do_job)
filemenu.add_separator()
filemenu.add_command(label='Exit', command=root.quit)
# 在filemenu上添加二级菜单
submenu = tk.Menu(filemenu)
filemenu.add_cascade(label='Import', menu=submenu, underline=0)
submenu.add_command(label="Image", command=do_job)
# 菜单项配置
root.config(menu=menubar)
root.mainloop()
11.布局
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
# grid用表格形式定位。row为行,colum为列,padx是单元格左右间距,pady是单元格上下间距
for i in range(4):
for j in range(3):
tk.Label(root, text=i+j).grid(row=i, column=j, padx=10, pady=10)
# place将这个部件放在坐标为(x,y)的位置,anchor=nw表示锚定点是西北角
tk.Label(root, text='Hello').place(x=200, y=100, anchor='nw')
root.mainloop()
12.Frame
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('400x300')
# 在root上创建一个frame
frm = tk.Frame(root).pack()
# 在frame上创建两个frame
frm_l = tk.Frame(frm)
frm_r = tk.Frame(frm)
# 布局位置
frm_l.pack(side='left')
frm_r.pack(side='right')
# 在Frame上添加组件
tk.Label(frm_l, text='frm_l1').pack()
tk.Label(frm_l, text='frm_l2').pack()
tk.Label(frm_r, text='frm_r1').pack()
root.mainloop()