屏幕小宠物(python3.8.5版)

有些人渴望有个小宠物,今天作者带了一个电子宠物——猫。

先把代码奉献给大家:

from tkinter import HIDDEN,NORMAL,Tk,Canvas
def toggle_eyes():
    current_color = c.itemcget(eye_left,'fill')
    new_color = c.color = c.body_color if current_color == 'white' else 'white'
    current_state = c.itemcget(pupil_left,'state')
    new_state = NORMAL if current_state == HIDDEN else HIDDEN
    c.itemconfigure(pupil_left, state=new_state)
    c.itemconfigure(pupil_right, state=new_state)
    c.itemconfigure(eye_left,fill=new_color)
    c.itemconfigure(eye_right,fill=new_color)

def blink():
    toggle_eyes()
    root.after(250,toggle_eyes)
    root.after(3000,blink)

def toggle_pupils():
    if not c.eyes_crossed:
        
        c.move(pupil_left,10,-5)
        c.move(pupil_right,-10,-5)
        c.eyes_crossed = True
    else:
        c.move(pupil_left,-10,5)
        c.move(pupil_right,10,5)
        c.eyes_crossed = False
       
        
def toggle_tongue():
    if not c.tongue_out:
        c.itemconfigure(tongue_tip,state=NORMAL)
        c.itemconfigure(tongue_main,state=NORMAL)
        c.tongue_out = True
    else:
        c.itemconfigure(tongue_tip,state=HIDDEN)
        c.itemconfigure(tongue_main,state=HIDDEN)
        c.tongue_out = False
        
def cheeky(event):
    toggle_tongue()
    toggle_pupils()
    hide_happy(event)
    root.after(1000,toggle_tongue)
    root.after(1000,toggle_pupils)
    return

def sad():
    if c.happy_level == 0:
        c.itemconfigure(mouth_happy,state=HIDDEN)
        c.itemconfigure(mouth_normal,state=HIDDEN)
        c.itemconfigure(mouth_sad,state=NORMAL)
    else:
        c.happy_level -= 1
    root.after(5000,sad)


def show_happy(event):
    if(20 <= event.x <= 350) and (20 <= event.y <=350):
        c.itemconfigure(cheek_left,state=NORMAL)
        c.itemconfigure(cheek_right,state=NORMAL)
        c.itemconfigure(mouth_happy,state=NORMAL)
        c.itemconfigure(mouth_normal,state=HIDDEN)
        c.itemconfigure(mouth_sad,state=HIDDEN)
        c.happy_level = 10
        
        return

def hide_happy(event):
    c.itemconfigure(cheek_left,state=HIDDEN)
    c.itemconfigure(cheek_right,state=HIDDEN)
    c.itemconfigure(mouth_happy,state=HIDDEN)
    c.itemconfigure(mouth_normal,state=NORMAL)
    c.itemconfigure(mouth_sad,state=HIDDEN)

    return

root = Tk()
c = Canvas(root,width=400,height=400)
c.configure(bg='dark blue',highlightthickness=0)
c.body_color = 'orange1'
body = c.create_oval(35,20,365,350,outline=c.body_color,fill=c.body_color)
ear_left = c.create_polygon(75,80,75,10,165,70,outline=c.body_color,fill=c.body_color)
ear_right = c.create_polygon(255,45,325,10,320,70,outline=c.body_color,\
                             fill=c.body_color)
foot_left = c.create_oval(65,320,145,360,outline=c.body_color,fill=c.body_color)
foot_right = c.create_oval(250,320,330,360,outline=c.body_color,fill=c.body_color)


eye_left = c.create_oval(130,110,160,170,outline='black',fill='white')
pupil_left = c.create_oval(140,145,150,155,outline='black',fill='black')
eye_right = c.create_oval(230,110,260,170,outline='black',fill='white')
pupil_right = c.create_oval(240,145,250,155,outline='black',fill='black')
mouth_normal = c.create_line(170,250,200,272,230,250,smooth=1,width=2,state=NORMAL)
mouth_happy = c.create_line(170,250,200,282,230,250,smooth=1,width=2,state=HIDDEN)
mouth_sad = c.create_line(170,250,200,232,230,250,smooth=1,width=2,state=HIDDEN)
tongue_main = c.create_rectangle(170,250,230,290,outline='red',fill='red',state=HIDDEN)
tongue_tip = c.create_oval(170,285,230,300,outline='red',fill='red',state=HIDDEN)


cheek_left =  c.create_oval(70,180,120,230,outline='pink',fill='pink',state=HIDDEN)
cheek_right =  c.create_oval(280,180,330,230,outline='pink',fill='pink',state=HIDDEN)
c.pack()

c.bind('<Motion>',show_happy)
c.bind('<Leave>',hide_happy)
c.bind('<Double-1>',cheeky)
c.happy_level = 10
c.eyes_crossed = False
c.tongue_out = False

root.after(1000,blink)
root.after(5000,sad)
root.mainloop()

代码是不是很多呀!

给你们看看效果!

屏幕小宠物(python3.8.5版)

它的正常模式

屏幕小宠物(python3.8.5版) 

它被抚摸的模式 ,鼠标划过去即可

屏幕小宠物(python3.8.5版)

你不理他,伤心的模式 ,给它抚摸模式就会重新开心起来!

上一篇:D - Face Produces Unhappiness


下一篇:用10种语言祝所有的程序员(1024)节日快乐【all Coder 1024 Day Happy!!】