Ich mache ein kleines Alien-Projekt, um Grafiken in Tkinter lernen zu helfen, und ich bin auf ein Problem gestoßen. Ich versuche, den Alien-Augapfel im Auge zu halten, aber ich bewege mich immer noch, aber das erfordert, dass ich den Rand des Augapfels erkenne, der ein Kreis ist. Nicht wirklich sicher, wie coords in tkinter (außer den Grundlagen) arbeiten, so dass jede Hilfe geschätzt wird. Vielen Dank!Tkinker Umfang eines Kreises Coords Umgang mit Python 3
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)
Könnten Sie echtes Problem in geometrischen Begriffen erklären? (Ich habe noch nie Alien gesehen :)) – MBo
Ein Kreis bewegt sich mit einem zufälligen Algorithmus innerhalb eines anderen Kreises und ich muss Parameter einstellen, damit er nicht aus dem Kreis entkommen kann. Also vielleicht eine Gleichung, um die Koordinaten für den Umfang zu erfassen (die Quadratwurzel von r im Quadrat minus x Quadrat?)? Vielen Dank :) –