Label控件
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
'''
Label:标签控件,可以显示文本
'''
label = tkinter.Label(win,
text="this is a word",
bg="pink", fg="red",
font=("黑体", 20),
width=100,
height=100,
wraplength=1000,
justify="left",
anchor="nw")
label.pack()
win.mainloop()
Button控件
import tkinter
def func():
print("我被调用了")
win = tkinter.Tk()
win.title("Button")
win.geometry("400x400+200+50")
button1 = tkinter.Button(win, text="调用方法", command=func, width=10, height=10)
button1.pack()
button2 = tkinter.Button(win, text="执行任务", command=lambda: print("我直接执行了"))
button2.pack()
button3 = tkinter.Button(win, text="退出", command=win.quit)
button3.pack()
win.mainloop()
Entry控件
import tkinter
win = tkinter.Tk()
win.title("Entry")
win.geometry("400x400+200+50")
'''
Entry:输入控件,用于显示简单的文本内容
'''
entry1 = tkinter.Entry(win, show="*")
entry1.pack()
e = tkinter.Variable()
entry2 = tkinter.Entry(win, textvariable=e)
entry2.pack()
e.set("设置值了")
print(e.get())
print(entry2.get())
win.mainloop()
点击按钮输出输入框中的内容
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
def showinfo():
print(entry.get())
entry = tkinter.Entry(win)
entry.pack()
button = tkinter.Button(win, text="按钮", command=showinfo)
button.pack()
win.mainloop()
Text控件
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
'''
文本控件:用于显示多行文本
'''
text = tkinter.Text(win, width=20, height=10)
text.pack()
str = "Tkinter模块是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用。"
str.encode('utf8')
text.insert(tkinter.INSERT, str)
win.mainloop()
带滚动条的Text
import tkinter
win = tkinter.Tk()
win.title("scroll")
'''
文本控件:用于显示多行文本
'''
scroll = tkinter.Scrollbar()
text = tkinter.Text(win, width=30, height=4)
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
text.pack(side=tkinter.LEFT, fill=tkinter.Y)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)
text.pack()
str = "谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情,谷歌查看教学区域详情"
text.insert(tkinter.INSERT, str)
win.mainloop()
Checkbutton多选框控件
import tkinter
win = tkinter.Tk()
win.title("Checkbutton")
win.geometry("400x400+200+50")
def updata():
message = ""
if hobby1.get() ==True:
message += "money\n"
if hobby2.get() == True:
message += "power\n"
if hobby3.get() == True:
message += "people\n"
text.delete(0.0, tkinter.END)
text.insert(tkinter.INSERT, message)
hobby1 = tkinter.BooleanVar()
check1 = tkinter.Checkbutton(win, text="money", variable=hobby1, command=updata)
check1.pack()
hobby2 = tkinter.BooleanVar()
check2 = tkinter.Checkbutton(win, text="power", variable=hobby2, command=updata)
check2.pack()
hobby3 = tkinter.BooleanVar()
check3 = tkinter.Checkbutton(win, text="people", variable=hobby3, command=updata)
check3.pack()
text = tkinter.Text(win, width=50, height=5)
text.pack()
win.mainloop()
Radiobutton单选框
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
def updata():
print(r.get())
r = tkinter.IntVar()
radio1 = tkinter.Radiobutton(win, text="one", value=1, variable=r, command=updata)
radio1.pack()
radio2 = tkinter.Radiobutton(win, text="two", value=2, variable=r, command=updata)
radio2.pack()
win.mainloop()
Listbox控件
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
lbv = tkinter.StringVar()
lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv)
lb.pack()
for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
lb.insert(tkinter.END, item)
print(lbv.get())
def myprint(event):
print(lb.get(lb.curselection()))
lb.bind("<Double-Button-1>", myprint)
win.mainloop()
Listbox控件滚动条
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
lb = tkinter.Listbox(win, selectmode=tkinter.EXTENDED)
lb.pack()
for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
lb.insert(tkinter.END, item)
sc = tkinter.Scrollbar(win)
sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
lb.configure(yscrollcommand=sc.set)
lb.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
sc["command"] = lb.yview
win.mainloop()
Scale控件
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
'''
供用户通过拖拽指示器来改变变量的值,可以水平,也可以竖直
'''
scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200)
scale1.pack()
scale1.set(20)
def showNum():
print(scale1.get())
tkinter.Button(win, text="按钮", command=showNum).pack()
win.mainloop()
Spinbox控件
import tkinter
win = tkinter.Tk()
win.title("数值范围控件")
win.geometry("400x400+200+50")
'''
数值范围控件
'''
v = tkinter.StringVar()
def updata():
print(v.get())
sp = tkinter.Spinbox(win, from_=0, to=100, increment=5,
textvariable=v, command=updata)
sp.pack()
v.set(20)
print(v.get())
win.mainloop()
Menu顶层菜单
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
menubar = tkinter.Menu(win)
win.config(menu=menubar)
def func():
print("**********")
menu1 = tkinter.Menu(menubar, tearoff=False)
for item in ['python','c','java','c++', 'c#','php','B','退出']:
if item == '退出':
menu1.add_separator()
menu1.add_command(label=item, command=win.quit)
else:
menu1.add_command(label=item, command=func)
menubar.add_cascade(label='语言', menu=menu1)
win.mainloop()
Menu鼠标右键菜单
import tkinter
win = tkinter.Tk()
win.title("lele")
win.geometry("400x400+200+50")
menubar = tkinter.Menu(win)
def func():
print("**********")
menu = tkinter.Menu(menubar, tearoff=False)
for item in ['python','c','java','c++', 'c#','php','B','退出']:
if item == '退出':
menu.add_separator()
menu.add_command(label=item, command=win.quit)
else:
menu.add_command(label=item, command=func)
menubar.add_cascade(label="语言", menu=menu)
def showMenu(event):
menubar.post(event.x_root, event.y_root)
win.bind("<Button-3>", showMenu)
win.mainloop()
Combobox下拉控件
import tkinter
from tkinter import ttk
win = tkinter.Tk()
win.title("Combobox")
win.geometry("400x400+200+50")
cv = tkinter.StringVar()
com = ttk.Combobox(win, textvariable=cv)
com.pack()
com["value"] = ("武汉", "杭州", "西安")
com.current(0)
def func(event):
print(com.get())
print(cv.get())
com.bind("<<ComboboxSelected>>", func)
win.mainloop()
Frame控件
import tkinter
win = tkinter.Tk()
win.title("Frame")
win.geometry("400x400+200+50")
'''
框架控件:在桌面上显示一个矩形区域,多作为一个容器控件
'''
frm = tkinter.Frame(win)
frm.pack()
frm_l = tkinter.Frame(frm)
tkinter.Label(frm_l, text="左上", bg="pink").pack(side=tkinter.TOP)
tkinter.Label(frm_l, text="左下", bg="blue").pack(side=tkinter.TOP)
frm_l.pack(side=tkinter.LEFT)
frm_r = tkinter.Frame(frm)
tkinter.Label(frm_r, text="右上", bg="green").pack(side=tkinter.TOP)
tkinter.Label(frm_r, text="右下", bg="red").pack(side=tkinter.TOP)
frm_r.pack(side=tkinter.RIGHT)
win.mainloop()
表格数据
import tkinter
from tkinter import ttk
win = tkinter.Tk()
win.title("Treeview")
win.geometry("600x400+200+50")
tree = ttk.Treeview(win)
tree.pack()
tree["columns"] = ("姓名","年龄","身高","体重")
tree.column("姓名", width=100)
tree.column("年龄", width=100)
tree.column("身高", width=100)
tree.column("体重", width=100)
tree.heading("姓名", text="姓名-name")
tree.heading("年龄", text="年龄-age")
tree.heading("身高", text="身高-height")
tree.heading("体重", text="体重-weight")
tree.insert("", 0, text="line1", values=("李欢","33","167cm","66kg"))
tree.insert("", 1, text="line2", values=("刘宇","23","178cm","69kg"))
win.mainloop()
树状数据
import tkinter
from tkinter import ttk
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
tree = ttk.Treeview(win)
tree.pack()
treeF1 = tree.insert("",0,"浙江",text= "浙江", values=("F1"))
treeF2 = tree.insert("",1,"江苏",text= "江苏", values=("F1"))
treeF3 = tree.insert("",2,"湖北",text= "湖北", values=("F1"))
treeF1_1 = tree.insert(treeF1,0,"杭州",text="杭州",values=("F1_1"))
treeF1_2 = tree.insert(treeF1,1,"台州",text="台州",values=("F1_2"))
treeF1_3 = tree.insert(treeF1,2,"慈溪",text="慈溪",values=("F1_3"))
treeF2_1 = tree.insert(treeF2,0,"南京",text="南京",values=("F2_1"))
treeF2_2 = tree.insert(treeF2,1,"苏州",text="苏州",values=("F2_2"))
treeF2_3 = tree.insert(treeF2,2,"无锡",text="无锡",values=("F2_3"))
treeF1_1_1 = tree.insert(treeF1_1,0,"滨江区",text="滨江区")
treeF1_1_2 = tree.insert(treeF1_1,1,"西湖区",text="西湖区")
win.mainloop()
绝对布局
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
label1 = tkinter.Label(win, text="A", bg="blue")
label2 = tkinter.Label(win, text="B", bg="red")
label3 = tkinter.Label(win, text="C", bg="green")
label1.place(x=20,y=20)
label2.place(x=50,y=50)
label3.place(x=100,y=100)
win.mainloop()
相对布局
import tkinter
win = tkinter.Tk()
win.title("相对布局")
win.geometry("400x400+200+50")
label1 = tkinter.Label(win, text="A", bg="blue")
label2 = tkinter.Label(win, text="B", bg="red")
label3 = tkinter.Label(win, text="C", bg="green")
label1.pack(fill=tkinter.Y, side=tkinter.LEFT)
label2.pack(fill=tkinter.X, side=tkinter.TOP)
label3.pack()
win.mainloop()
表格布局
import tkinter
win = tkinter.Tk()
win.title("表格布局")
win.geometry("400x400+200+50")
label1 = tkinter.Label(win, text="A", bg="blue")
label2 = tkinter.Label(win, text="B", bg="red")
label3 = tkinter.Label(win, text="C", bg="green")
label4 = tkinter.Label(win, text="D", bg="yellow")
label1.grid(row=0,column=0)
label2.grid(row=0,column=1)
label3.grid(row=1,column=0)
label4.grid(row=1,column=1)
win.mainloop()
鼠标点击事件
import tkinter
win = tkinter.Tk()
win.title("点击")
win.geometry("400x400+200+50")
def func(event):
print(event.x, event.y)
button1 = tkinter.Button(win, text="点击")
button1.bind("<Button-1>", func)
button1.pack()
win.mainloop()
鼠标移动事件
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="*********")
label.pack()
def func(event):
print(event.x, event.y)
label.bind("<B1-Motion>", func)
win.mainloop()
鼠标释放事件
import tkinter
win = tkinter.Tk()
win.title("释放鼠标左键")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="*********", bg="red")
label.pack()
def func(event):
print(event.x, event.y)
label.bind("<ButtonRelease-1>", func)
win.mainloop()
进入和离开事件
import tkinter
win = tkinter.Tk()
win.title("鼠标进入控件")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="*********", bg="red")
label.pack()
def func(event):
print(event.x, event.y)
label.bind("<Enter>", func)
label.bind("<Leave>", func)
win.mainloop()
响应所有按键的事件
import tkinter
win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="*********", bg="red")
label.focus_set()
label.pack()
def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode)
label.bind("<Key>", func)
win.mainloop()
响应特殊按键事件
import tkinter
win = tkinter.Tk()
win.title("响应左侧的shift键")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="响应左侧的shift键", bg="red")
label.focus_set()
label.pack()
def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode)
label.bind("<Shift_L>", func)
win.mainloop()
指定按键事件
import tkinter
win = tkinter.Tk()
win.title("指定按键事件")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="指定按键事件a", bg="red")
label.focus_set()
label.pack()
def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode)
win.bind("a", func)
win.mainloop()
组合按键事件
import tkinter
win = tkinter.Tk()
win.title("组合按键事件")
win.geometry("400x400+200+50")
label = tkinter.Label(win, text="Shift-Up", bg="red")
label.focus_set()
label.pack()
def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode)
win.bind("<Shift-Up>", func)
win.mainloop()