A cute screenpet has different reactions when interacting on a desktop. This screenspet changes its reactions based on the interaction of the users.
Screenpet Project Python
To Build a Simple Screenpet Project You need to follow the below steps
Step 1. Download Python
You only need Python to run this script. You can visit here to download Python and then you need to install a package named tk.
pip install tk
Step 2. Write the following code
Write this code in a Python file or directly copy this code and save the file with the name and .py extension python screenpet.py
from tkinter import Tk, HIDDEN, NORMAL, Canvas
from turtle import fillcolor
def toggle_eyes():
current_color = c.itemcget(eye_left, 'fill')
new_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()
win.after(250,toggle_eyes)
win.after(3000,blink)
def toggle_pupils():
if not c.crossed_eyes:
c.move(pupil_left, 10,-5)
c.move(pupil_right, -10,-5)
c.crossed_eyes = True
else:
c.move(pupil_left, -10,5)
c.move(pupil_right, 10,5)
c.crossed_eyes = 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)
win.after(1000,toggle_tongue)
win.after(1000,toggle_pupils)
return
def show_happy(event):
if(20 <= event.x and event.x < 350) and (20 <= event.y and 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
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
win.after(500,sad)
win = Tk()
c = Canvas(win, width=400, height=400)
c.configure(bg='dark blue', highlightthickness=0)
c.body_color = 'SkyBlue1'
body = c.create_oval(35,20,365,350, 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_left = c.create_oval(250,320,330,360, outline=c.body_color, fill=c.body_color)
ear_left = c.create_polygon(75,88,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)
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.crossed_eyes = False
c.tongue_out = False
c.happy_level = 10
win.after(1000,blink)
win.after(5000,sad)
win.mainloop()
Step 3. Run the code
After saving the code double-click on the file to run the program or simply open Command Prompt and write the following command.
python screenpet.py
Demo:

1 Comment