2016-04-30 21 views
0

Я хотел бы, чтобы прямоугольник перемещался, где бы я ни нажимал мышью, никаких идей? Я пробовал все, и ничего не работает. Это для проекта, где мяч упадет, и прямоугольник должен будет поймать мяч. Мне просто нужно, чтобы прямоугольник двигаться вдоль оси X, где когда-либо мышь перешедшейПеремещение прямоугольника вдоль оси X с помощью checkMouse()

from graphics import* 
import time 
from random import randrange 

wd=GraphWin("Catch A Ball",500,500)#size of window 
wd.setBackground("lightblue") 


p1=220 #size of rectangle # size of rectangle 
p2=250 


for i in range(1): #outline of rectangle 
spt1=Point(p1,480) 
spt2=Point(p2,500) 
rct=Rectangle(spt1,spt2) 
rct.setOutline("black") 
rct.setFill("black") 
rct.draw(wd) 

p=wd.getMouse() # defining the y and x axis 
c=rct.getCenter() 
dx=p.getX() - c.getX() 
dy=p.getY() - c.getY() 
rct.move(dx,0) 

ответ

0

Я просто нужен прямоугольник для перемещения вдоль оси X, где когда-либо мышь щелкает

Ниже переработана код должен делать то, что вы описали:

from graphics import * 

SCREEN_WIDTH, SCREEN_HEIGHT = 500, 500 # size of window 

BOX_WIDTH, BOX_HEIGHT = 30, 20 

window = GraphWin("Catch A Ball", SCREEN_WIDTH, SCREEN_HEIGHT) 
window.setBackground("lightblue") 

for i in range(1): 
    ll = Point(SCREEN_WIDTH/2 - BOX_WIDTH/2, SCREEN_HEIGHT) 
    ur = Point(SCREEN_WIDTH/2 + BOX_WIDTH/2, SCREEN_HEIGHT - BOX_HEIGHT) 
    rectangle = Rectangle(ll, ur) # outline of rectangle 
    rectangle.setFill("black") 
    rectangle.draw(window) 

while True: 
    point = window.getMouse() # obtain cursor position 
    center = rectangle.getCenter() 
    dx = point.getX() - center.getX() 
    rectangle.move(dx, 0) 

Я не вполне комфортно с бесконечным циклом while True, но поскольку графика Zelle не показывает никаких событий таймера Tkinter, мы сделаем это.