圆的弯曲周长坐标3

2024-04-19 22:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个小外星人项目,以帮助学习图形在tkinter和我遇到了一个问题。我试图让外星人的眼球停留在眼睛里,但仍然四处移动,但这需要我检测眼球的边缘,这是一个圆。不太清楚coords在tkinter中是如何工作的(除了基本的),所以非常感谢您的帮助。谢谢!你知道吗

from tkinter import *
from threading import Timer
import random
import time
global canvas, root

root = Tk()
root.title("Alien")
root.attributes("-topmost", 1)

canvas = Canvas(root, height=300, width =400)
canvas.pack()
Blinking = False

class Alien:
    def __init__(self):
        global canvas, root
        self.body = canvas.create_oval(100,150,300,250, fill = "green")
        self.eye = canvas.create_oval(170,70,230,130, fill = "white")
        self.eyeball = canvas.create_oval(190,90,210,110, fill = "black")
        self.mouth = canvas.create_oval(150,220,250,240, fill = "red")
        self.neck = canvas.create_line(200,150,200,130)
        self.hat = canvas.create_polygon(180,75,220,75,200,20, fill = "blue")
        self.words = canvas.create_text(200,800, text = "I'm an alien!", anchor="nw")
        root.update()

    def openMouth(self):
        global canvas, root
        canvas.itemconfig(self.mouth, fill = "black")
        root.update()
    def closeMouth(self):
        global canvas, root
        canvas.itemconfig(self.mouth, fill = "red")
        root.update()

    def burp(self, event):
        self.openMouth()
        canvas.itemconfig(self.words, text = "BURRRRP!")
        time.sleep(0.5)
        self.closeMouth()
    def moveEye(self,event):
        global root, canvas
        canvas.move(alien.eyeball , random.randint(-1,1) , random.randint(-1,1))
        root.update()

    def blink(self,event):
        canvas.itemconfig(self.eye, fill = "green")
        canvas.itemconfig(self.eyeball, state=HIDDEN)
        Blinking = True
        root.update()
    def unblink(self,event):
        canvas.itemconfig(self.eye, fill = "white")
        canvas.itemconfig(self.eyeball, state=NORMAL)
        Blinking = False
        root.update()



alien = Alien()
alien.openMouth()
time.sleep(1)
alien.closeMouth()
canvas.bind_all("<Button-1>", alien.burp)
canvas.bind_all("<KeyPress-a>", alien.blink)

Timer(2, alien.moveEye).start()
while not Blinking:
    alien.moveEye(event)
    if alien.moveEye.event.x > 190:
        canvas.move(alien.eyeball, -1 , 0)

Tags: importselfeventdefcreateupdaterootfill