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()
相关推荐
Rabitebla1 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞3 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
无心水6 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd6 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Zhao-Jichao9 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李10 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga11 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd11 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白12 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李13 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议