目录
一.按钮
import tkinter as tk
window=tk.Tk() # 窗口对象
window.title('智能拼图')
window.geometry('900x600') #宽900,高600
l=tk.Label(window,text='菜单栏',bg='green',font=('Arial',12),width=30,height=10) # 标签宽度:30 高度100
# l.pack() # l.place():具体放在某个点上
# l.place(x=800,y=0)
l.place(relx=0.5, rely=0.5,anchor=tk.CENTER)
var=tk.StringVar()
on_hit=True
def hit_me():
global on_hit
var.set('开始游戏')
if on_hit:
var.set('结束游戏')
on_hit = False
else:
var.set('开始游戏')
on_hit=True
b=tk.Button(window,textvariable=var,bg='orange',width=10,height=1,command=hit_me)
b.place(relx=0.9,rely=0.9)
window.mainloop()
二、文本框
import tkinter as tk
window=tk.Tk()
window.title('文本框')
window.geometry('400x400')
# e=tk.Entry(window,show='*')
e=tk.Entry(window,show=None)
e.pack()
def insert_point():
var=e.get()
t.insert('insert',var)
# def end_point():
# var=e.get()
# t.insert('end',var)
def end_point():
var=e.get()
t.insert(3.3,var)
b1=tk.Button(window,text='insert point',width=10,height=2,command=insert_point)
b1.pack()
b2=tk.Button(window,text='end point',width=10,height=4,command=end_point)
b2.pack()
t=tk.Text(window,height=2)
t.pack()
window.mainloop()
三、ListBox
import tkinter as tk
window=tk.Tk()
window.title('ListBox')
window.geometry('400x400')
var1=tk.StringVar()
def hit():
value=lb.get(lb.curselection())
var1.set(value)
l=tk.Label(window,width=20,height=1,font=('Arial',14),textvariable=var1,bg='orange')
l.pack()
b=tk.Button(window,width=10,height=2,text='点我啊',command=hit)
b.pack()
var2=tk.StringVar()
var2.set(('关羽','张飞','曹操','刘备','吕布'))
lb=tk.Listbox(window,listvariable=var2)
lb.insert(2,'貂蝉')
lb.insert('end','孙策')
lb.delete(3)
lb.pack()
window.mainloop()
四、RadiusButton
import tkinter as tk
window=tk.Tk()
window.title('radiusButton')
window.geometry('500x500')
var1=tk.StringVar()
l=tk.Label(window,width=50,height=2,font=('Arial',12),bg='green',text='初始化')
l.pack()
def print_select():
l.config(text='you have selected '+var1.get())
r1=tk.Radiobutton(window,text='option A',variable=var1,value='A',command=print_select)
r1.pack()
r2=tk.Radiobutton(window,text='option B',variable=var1,value='B',command=print_select)
r2.pack()
r3=tk.Radiobutton(window,text='option C',variable=var1,value='C',command=print_select)
r3.pack()
window.mainloop()
五、滚动条-scale
import tkinter as tk
window=tk.Tk()
window.title('radiusButton')
window.geometry('500x500')
l=tk.Label(window,width=50,height=2,font=('Arial',12),bg='green',text='初始化')
l.pack()
def print_select(v):
l.config(text='you have selected '+v)
s=tk.Scale(window,label='try me',from_=5,to=11,orient=tk.HORIZONTAL,length=300,showvalue=True,
tickinterval=3,resolution=0.1,command=print_select)
s.pack()
window.mainloop()
六、复选框-checkbutton
import tkinter as tk
window=tk.Tk()
window.title('radiusButton')
window.geometry('500x500')
l=tk.Label(window,width=60,height=1,bg='orange')
l.pack()
def print_select():
if(var1.get()==1)&(var2.get()==1):
l.config(text='both love')
elif(var1.get()==1)&(var2.get()==0):
l.config(text='love Python')
elif(var1.get()==0)&(var2.get()==1):
l.config(text='love Java')
else:
l.config(text='not both love')
var1=tk.IntVar()
var2=tk.IntVar()
c1=tk.Checkbutton(window,text='Python',variable=var1,onvalue=1,offvalue=0,command=print_select)
c1.pack()
c2=tk.Checkbutton(window,text='Java',variable=var2,onvalue=1,offvalue=0,command=print_select)
c2.pack()
window.mainloop()
七、画布-canvas
import tkinter as tk
window=tk.Tk()
window.title('canvas')
window.geometry('400x400')
canvas=tk.Canvas(window,width=400,height=200,bg='gray')
img_file=tk.PhotoImage(file='./imgs/1.gif',width=50,height=50)
# anchor表示图片的起点位置(nw:西北角,ne:东北角,sw:西南角,se,东南角,center:中心位置)
image=canvas.create_image(0,0,anchor='nw',image=img_file)
x1,x2,y1,y2=60,90,60,90
line=canvas.create_line(x1,y1,x2,y2)
oval=canvas.create_oval(x1,y1,x2,y2,fill='red')
arc=canvas.create_arc(40,100,60,200,start=0,extent=180,fill='orange')
rect=canvas.create_rectangle(50,100,150,200)
canvas.pack()
def moveit():
canvas.move(image,2,3)
button=tk.Button(window,text='move',width=20,height=10,bg='orange',command=moveit)
button.pack()
window.mainloop()
八、菜单-menu
import tkinter as tk
window = tk.Tk()
window.title('菜单')
window.geometry('400x400')
l = tk.Label(window, text='', width=10, height=1, bg='yellow')
l.pack()
counter = 0
def do_obj():
global counter
l.config(text='do' + str(counter))
counter += 1
menubar = tk.Menu(window) # 创建菜单栏
filemenu = tk.Menu(menubar, tearoff=0) # 对菜单栏的格式进行设置,tearoff表示能否被分开
menubar.add_cascade(label='File', menu=filemenu) # 设置菜单选项
filemenu.add_command(label='New', command=do_obj)
filemenu.add_command(label='Open', command=do_obj)
filemenu.add_command(label='Save', command=do_obj)
filemenu.add_separator()
filemenu.add_command(label='Exit', command=window.quit)
editmenu = tk.Menu(menubar, tearoff=0) # 对菜单栏的格式进行设置,tearoff表示能否被分开
menubar.add_cascade(label='Edit', menu=editmenu) # 设置菜单选项
editmenu.add_command(label='Copy', command=do_obj)
editmenu.add_command(label='Paste', command=do_obj)
editmenu.add_command(label='Cut', command=do_obj)
submenu=tk.Menu(filemenu)
filemenu.add_cascade(label='Import',menu=submenu,underline=False)
submenu.add_command(label='Submenu1',command=do_obj)
window.config(menu=menubar)
window.mainloop()
九、frame
import tkinter as tk
window=tk.Tk()
window.title('Frame')
window.geometry('400x400')
frm=tk.Frame(window)
frm.pack()
frm_l=tk.Frame(frm)
frm_r=tk.Frame(frm)
frm_l.pack(side='left')
frm_r.pack(side='right')
tk.Label(frm_l,text='on the frm_11').pack()
tk.Label(frm_r,text='on the frm_r').pack()
tk.Label(frm_l,text='on the frm_12').pack()
window.mainloop()
十、messagebox
import tkinter as tk
from tkinter.messagebox import showinfo
window=tk.Tk()
window.title('弹窗')
window.geometry('400x400')
def hit_me():
tk.messagebox.showinfo(title='提示',message='发送成功')
tk.messagebox.showwarning(title='警告', message='执行有误')
tk.messagebox.showerror(title='错误', message='程序出错')
print(tk.messagebox.askyesno(title='选择', message='确定删除吗?')) # 返回值是True或者False
print(tk.messagebox.askquestion(title='问题',message='询问?')) # yes no
print(tk.messagebox.askokcancel(title='询问',message='确定还是取消?'))
print(tk.messagebox.askretrycancel(title='选择',message='询问?')) # true false
print(tk.messagebox.askyesnocancel(title='选择',message='询问')) # true false none
tk.Button(window,width=20,height=10,text='hit me',command=hit_me).pack()
window.mainloop()
注意点:放置部件的三种方式
import tkinter as tk
window=tk.Tk()
window.title('部件的三种放置方式')
window.geometry('500x500')
# pack()进行部件放置的四种方式
# tk.Label(window,text='top').pack(side='top')
# tk.Label(window,text='right').pack(side='right')
# tk.Label(window,text='left').pack(side='left')
# tk.Label(window,text='bottom').pack(side='bottom')
# for i in range(4):
# for j in range(3):
# tk.Label(window,text=1).grid(row=i,column=j,padx=10,pady=10) # 外部相距为10
# tk.Label(window, text=1).grid(row=i, column=j, ipadx=10, ipady=10) # 内部相距为10
# place(x,y,anchor)放置在具体的点上:
# 参数介绍:x和y表示放置的具体的位置,值可以是小数,表示百分比
# anchor表示从哪开始放置,nw:西北角,ne:东北角,sw:西南角,se:东南角,center:中心点
tk.Label(window,text='place').place(x=10,y=20,anchor='nw')
# 在window中创建一个新的窗口
# tk.Toplevel(window)
window.mainloop()