tkinter学习案例--笔记代码

学习视频:https://www.bilibili.com/video/BV1jW411Y7dL/?spm_id_from=333.337.search-card.all.click&vd_source=81584e9639e054943cf0f47509a8b4da

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()
相关推荐
咬_咬2 小时前
go语言学习(基本数据类型)
开发语言·学习·golang·数据类型
独小乐2 小时前
009.中断实践之实现按键测试|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
山甫aa2 小时前
List 容器 -----C++的stl学习
开发语言·c++·学习
无聊大侠hello world2 小时前
Yu-AI-Agent 项目(AI 恋爱大师智能体) · 学习笔记
人工智能·笔记·学习
AI_零食2 小时前
Flutter 框架跨平台鸿蒙开发 - 孤独指数应用
学习·flutter·开源·harmonyos
CheerWWW2 小时前
C++学习笔记——箭头运算符、std::vector的使用、静态链接、动态链接
c++·笔记·学习
ZhiqianXia3 小时前
Pytorch 学习笔记(17):decompositions.py —— 算子分解的百科全书
pytorch·笔记·学习
xian_wwq3 小时前
【学习笔记】大模型如何理解图片
笔记·学习
talen_hx2963 小时前
《零基础入门Spark》学习笔记 Day 13
笔记·学习·spark