1、标签和按钮例子
python
#标签和按钮的学习
import tkinter as tk
on_hit = False
def hit_me():
#定义一个函数
global on_hit
if on_hit==False:
on_hit =True
var1.set('you hit me')
else:
on_hit=False
var1.set(' ')
window = tk.Tk()
window.title('my window')
window.geometry('200x100') #用小写x
var1= tk.StringVar()#定义变量
var1.set(' ')
label=tk.Label(window, textvariable=var1,bg='green',
font=('Arial',12),width=15,height=2) #长宽是字符多少个 object都是大写
label.pack()#放在上下左右
botton1=tk.Button(window, text='hit me',width=15,
height=2,command=hit_me)
botton1.pack()
#运行
window.mainloop()#window会不断刷新循环
2、输入框和文本框学习
python
#输入框和文本框的学习
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
def insert_point():
var=entry1.get()
text1.insert('insert',var)
def insert_end():
var=entry1.get()
text1.insert('end',var)
entry1=tk.Entry(window,show='*')#输入框
entry1.pack()
botton1=tk.Button(window,text="insert point",width=15,height=2,
command=insert_point)
botton1.pack()
button2=tk.Button(window,text='insert end',
command=insert_end)
button2.pack()
text1=tk.Text(window,height=2)
text1.pack()
window.mainloop()
3、列表学习
python
#list学习
#输入框和文本框的学习
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
def print_selection():
value=listbox1.get(listbox1.curselection())#得到所选的值
var1.set(value)
var1= tk.StringVar()
label1=tk.Label(window,bg='yellow',width=4,textvariable=var1)
label1.pack()
botton1=tk.Button(window,text="print selection",width=15,height=2,
command=print_selection)
botton1.pack()
var2=tk.StringVar()
var2.set((11,22,33,44))
listbox1=tk.Listbox(window,listvariable=var2)
list_item=[1,2,3,4]
for item in list_item:
listbox1.insert('end',item)#插入内容
listbox1.insert(1,"first")#第一个位置插入字符
listbox1.insert(2,'second')
listbox1.delete(2)
listbox1.pack()
window.mainloop()
4、点选学习
python
#radiobutton 点选
import tkinter as tk
window = tk.Tk()
window.title('my windows')
window.geometry('200x200')
var= tk.StringVar()
label1=tk.Label(window,bg='yellow',width=20,
text='empty')
label1.pack()
def print_selection():
label1.config(text='you have select '+var.get())
r1=tk.Radiobutton(window,text='Option A',
variable=var,value='A',
command=print_selection)#当选中时候会将value的值给variable
r1.pack()
r2=tk.Radiobutton(window,text='Option B',
variable=var,value='B',
command=print_selection)#当选中时候会将value的值给variable
r2.pack()
r3=tk.Radiobutton(window,text='Option C',
variable=var,value='C',
command=print_selection)#当选中时候会将value的值给variable
r3.pack()
window.mainloop()
5、尺度条学习
python
#使用尺度条
import tkinter as tk
def print_selection(v):
label1.config(text='you have selectd'+v)
window = tk.Tk()
label1=tk.Label(window,bg='green')
label1.pack()
s=tk.Scale(window,label='try me',from_=5,to=11,
orient=tk.HORIZONTAL, #横
length=200,#200 像素
showvalue=1,#0不显示
tickinterval=3,resolution=0.01,
command=print_selection)#变量的单位长度
s.pack()
window.mainloop()
6、
展示列表,选择列表
python
import tkinter as tk
def print_selection():
varint1=var1.get()
varint2=var2.get()
if varint1 & varint2:
label1.config(text='I love both')
elif (varint1==1) & (varint2 ==0):
label1.config(text='I love python')
elif (varint2==1) & (varint1==0):
label1.config(text='I love C++')
else:
label1.config(text='I do not love either')
window = tk.Tk()
label1=tk.Label(window,bg='green')
label1.pack()
var1=tk.IntVar()
var2=tk.IntVar()
c1=tk.Checkbutton(window,text='python',
variable=var1,onvalue=1,offvalue=0,
command=print_selection)#选定赋值为1,不选赋值为0
c2=tk.Checkbutton(window,text='c++',
variable=var2,onvalue=1,offvalue=0,
command=print_selection)#选定赋值为1,不选赋值为0
c1.pack()
c2.pack()
window.mainloop()
7、画布
python
#画布的制作
import tkinter as tk
def moveit():
#pass
canvas.move(rect,0,2)#每次点击按钮正方形向下移动2
window=tk.Tk()
window.title('my window')
window.geometry('200x200')
canvas= tk.Canvas(window,bg='blue',
height=100,width=200 # 像素单位
)
image_file=tk.PhotoImage(file='2026.png')
#画布上放置图
image = canvas.create_image(12,0,anchor='nw',image=image_file) #anchor 图像已哪个点计算定位点 可以选择东西南北和45度位置
#画布上画图案
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)#扇形,0到180度
rect=canvas.create_rectangle(100,30,120,50)#正方形
canvas.pack()
button1=tk.Button(window,text='move',
command=moveit).pack()
window.mainloop()
8、manubar
python
#manubar
import tkinter as tk
counter=0
def do_job():
global counter
l.config(text='do'+str(counter))
counter=counter+1
window=tk.Tk()
window.title('my window')
window.geometry('200x200')
l=tk.Label(window,text='',bg='yellow')
l.pack()
menubar = tk.Menu(window)
filemenu=tk.Menu(menubar,tearoff=0)#tearoff 是不是可以分开的选项
menubar.add_cascade(label='file',menu=filemenu)#将filemenu加到menu
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=window.quit)
submenu=tk.Menu(filemenu)#子menu放在filemenu下
filemenu.add_cascade(label='Import',menu=submenu,underline=0)
submenu.add_command(label='submenu1',command=do_job)
window.config(menu=menubar)
window.mainloop()
9、frame 和messagebox
python
#frame
#有助于布局美观
# import tkinter as tk
# window=tk.Tk()
# window.title('my window')
# window.geometry('200x200')
# tk.Label(window,text='on window').pack()
# frm = tk.Frame(window)
# frm.pack()
# frm_left=tk.Frame(window)
# frm_left.pack(side='left')
# frm_right=tk.Frame(window)
# frm_right.pack(side='right')
# tk.Label(frm_left,text='on the frm_left').pack()
# tk.Label(frm_left,text='on the frm_left').pack()
# tk.Label(frm_right,text='on the right frame').pack()
# window.mainloop()
#
import tkinter as tk
from tkinter import messagebox
def click():
messagebox.showinfo(title='Hi',message='hahaha')
messagebox.showwarning(title='Hi',message='nonono')
messagebox.showerror(title='error',message='error')
print(messagebox.askquestion(title='Hi',message="yes or no"))
window=tk.Tk()
window.title('my window')
window.geometry('200x200')
tk.Button(window,text='click me',command=click).pack()
window.mainloop()
10、综合例子
python
#如何放置
import tkinter as tk
from tkinter import messagebox
import pickle
def use_login():
#pass
usrname=var_usrname.get()
passport=var_password.get()
try:
with open('usrs_info.pickle','rb') as usr_file:
usrs_info=pickle.load(usr_file)
except FileNotFoundError:
with open('usrs_info.pickle','wb') as usr_file:
usrs_info={'admin':'admin'}
pickle.dump(usrs_info,usr_file)
if usrname in usrs_info:
if passport == usrs_info[usrname]:
messagebox.showinfo(title='welcome',message=
'How are you!!'+usrname)
else:
messagebox.showerror(message=
'Error,you password is wrong')
else:
is_sign_up=messagebox.askyesno('welcome',
'you have not sign up yet.' \
'Sign up?')
if is_sign_up:
usr_signin()
def usr_signin():
def confirm_pwd_signup():
np=new_name.get()
npwd=new_pwd.get()
npwdc=new_pwd_confirm.get()
with open('usrs_info.pickle','rb') as usr_file:
exist_usr_info = pickle.load(usr_file)
if npwd!=npwdc:
messagebox.showerror('error','password and confirm password must be the same')
elif np in exist_usr_info:
messagebox.showerror('error','the usr has exist')
else:
exist_usr_info[np]=npwd
with open('usrs_info.pickle','wb') as usr_file:
pickle.dump(exist_usr_info,usr_file)
messagebox.showinfo('welcome','you have sign up success')
windows_signup.destroy()
windows_signup=tk.Toplevel(window)
windows_signup.title('sign up window')#窗口上弹出的窗口
windows_signup.geometry('300x300')
#账户名标签和输入框
new_name=tk.StringVar()
new_name.set('example@python.com')
tk.Label(windows_signup,text='User name:').place(x=10,y=10)
entry_usr_name=tk.Entry(windows_signup,textvariable=new_name)
entry_usr_name.place(x=150,y=10)
#密码输入框和标签
new_pwd=tk.StringVar()
tk.Label(windows_signup,text='password').place(x=10,y=50)
entry_usr_pwd=tk.Entry(windows_signup,textvariable=new_pwd)
entry_usr_pwd.place(x=150,y=50)
#密码确认框和标签
new_pwd_confirm=tk.StringVar()
tk.Label(windows_signup,text='confirm password').place(x=10,y=90)
entry_usr_pwd_comfirm=tk.Entry(windows_signup,
textvariable=new_pwd_confirm,
show='*')
entry_usr_pwd_comfirm.place(x=150,y=90)
#确认注册的按钮
btn_comfirm_sign_up=tk.Button(windows_signup,text='yes',command=confirm_pwd_signup)
btn_comfirm_sign_up.place(x=150,y=130)
window = tk.Tk()
window.title('my window')
window.geometry('400x400')
# tk.Label(text='1').place(x=0,y=11)
# tk.Label(text='2').pack(side='left')
# 作简单的窗口
canvas = tk.Canvas(window, height=200,width=200)
imagefile = tk.PhotoImage(file='2026.png')
image = canvas.create_image(0,0,anchor='nw',image=imagefile)
canvas.pack(side='top')
tk.Label(window,text='user name').place(x=50,y=150)
tk.Label(window,text='password').place(x=50,y=190)
var_usrname=tk.StringVar()
var_usrname.set('EXAMPLE@PYTHON.COM')
var_password=tk.StringVar()
entry_usr_name=tk.Entry(window,textvariable=var_usrname)
entry_usr_name.place(x=160,y=150)
entrypass=tk.Entry(window,textvariable=var_password,show='*')
entrypass.place(x=160,y=190)
btn_login=tk.Button(window,text='Login',command=use_login)
btn_login.place(x=170,y=230)
btn_sign_up=tk.Button(window,text='sign up',command=usr_signin)
btn_sign_up.place(x=270,y=230)
window.mainloop()