1、canvas
import tkinter as tk
window = tk.Tk()
window.title("The window")
window.geometry("400x300")
canvas = tk.Canvas(window, bg='blue', height=100, width=200)
#添加图片
#image_file = tk.PhotoImage(file='ins.gif')
#image = canvas.create_image(10,10,anchor='nw',image=image_file)
#创建直线
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,fill='yellow')
#创建一个长方形
rect = canvas.create_rectangle(100,30,100+20,30+20)
canvas.pack()
def moveit():
canvas.move(rect,0,8)
b = tk.Button(window,text='move',command=moveit)
b.pack()
window.mainloop()
注:tkinter 只能打开*.gif 图片。如要打开其他图片,则添加其它库 如pillow 或 pil
2、菜单栏 Menu
import tkinter as tk
window = tk.Tk()
window.title("The window")
window.geometry("400x300")
l = tk.Label(window,text='',bg='red')
l.pack()
counter = 0
def do_job():
global counter
l.config(text='do ' + str(counter))
counter += 1
#创建一个菜单栏
menubar = tk.Menu(window)
#在menubar中创建filemenu菜单单元
filemenu = tk.Menu(menubar,tearoff=0)
#将上面定义的空菜单命名为file,放在菜单栏中
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_command(label='Save',command=do_job)
filemenu.add_separator()
filemenu.add_command(label='Exit',command=window.quit)
window.config(menu=menubar)
editmenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='Edit',menu=editmenu)
editmenu.add_command(label='Cut',command=do_job)
editmenu.add_command(label='Copy',command=do_job)
editmenu.add_command(label='Paste',command=do_job)
#和上面定义菜单一样,不过此处在file上创建一个空菜单
submenu = tk.Menu(filemenu)
filemenu.add_cascade(label='Import',menu=submenu,underline=0)
submenu.add_command(label='Submenu1',command=do_job)
window.mainloop()
3、Frame
import tkinter as tk
window = tk.Tk()
window.title("The window")
window.geometry("400x300")
tk.Label(window,text='On the window',bg='red').pack()
#在window上创建一个frame
frm = tk.Frame(window)
frm.pack()
#在frm上创建两个frame
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_l1',bg='yellow').pack()
tk.Label(frm_l, text='on the frm_l2',bg='yellow').pack()
tk.Label(frm_r, text='on the frm_r1',bg='green').pack()
window.mainloop()
4、Messager
import tkinter as tk
import tkinter.messagebox
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
#创建消息弹窗
def hit_me():
tk.messagebox.showinfo(title='Weclome to tkinter', message='Weclome') # return 'ok'
#tk.messagebox.showwarning(title='Hi', message='nononono') # return 'ok'
#tk.messagebox.showerror(title='Hi', message='No!! never') # return 'ok'
#print(tk.messagebox.askquestion(title='Hi', message='hahahaha')) # return 'yes' , 'no'
#print(tk.messagebox.askyesno(title='Hi', message='hahahaha')) # return True, False
#print(tk.messagebox.asktrycancel(title='Hi', message='hahahaha')) # return True, False
#print(tk.messagebox.askokcancel(title='Hi', message='hahahaha')) # return True, False
#print(tk.messagebox.askyesnocancel(title="Hi", message="haha")) # return, True, False, None
tk.Button(window, text='hit me', command=hit_me).pack()
window.mainloop()
![](https://i-blog.csdnimg.cn/blog_migrate/782b6f9dc3f63cc3068e9feb7572da4f.png)