首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理python 3的圆的Tkinker圆周

处理python 3的圆的Tkinker圆周
EN

Stack Overflow用户
提问于 2017-03-26 13:35:48
回答 1查看 114关注 0票数 1

我正在做一个小的外星项目,以帮助学习图形在tkinter和我遇到一个问题。我试图让外星人的眼球停留在眼睛内,但仍然四处移动,但这需要我去探测眼球的边缘,这是一个圆圈。不太确定和弦如何工作在平直(除了基本),所以任何帮助赞赏。谢谢!

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-26 15:18:22

半径为R的小圆位于半径为R的大圆内,如果

代码语言:javascript
复制
 (BigCenter.X - SmallCenter.x)^2 + (BigCenter.Y - SmallCenter.Y)^2 < (R - r)^2

^2表示平方值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43029427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档