繁体   English   中英

python zelle graphics checkMouse()?

[英]python zelle graphics checkMouse()?

yes_box = Rectangle(Point(200, 150),Point(350,50))
yes_box.setOutline('blue')
yes_box.setWidth(1)
yes_box.draw(graphics_win)









def mouse_check(arg1): 
     ??????

嘿,有一个简短的问题可能很明显,但是我真的很困惑。 因此,我正在编写一个程序(游戏),要求您在yes_box的框内单击(如上所示)。 我需要编写一个函数来检查鼠标单击是否在矩形的边界内,如果是,则返回“ y”,如果不是,则返回“ n”。

我知道您需要使用win.getMouse()和win.checkMouse()函数,但是我不确定如何获取python以确定该单击是否在矩形对象的边界内? 任何帮助将不胜感激!

您可以使用以下功能:

p1 = rectangle.getP1()
rx1 = p1.getX()
ry1 = p1.getY()

p2 = rectangle.getP2()
rx2 = p2.getX()
ry2 = p2.getY()

x1 = point.getX()
y1 = point.getY()


if x1>=rx1 and y1<=ry1 and x1<=rx2 and y1>= ry2:

    return y
else: 
    return n 

点应该是用户单击的点。 矩形是您要知道用户是否单击的矩形。

您只需要获取win.getMouse()返回的点,并确保x和y值在范围内即可。 我在inside函数中执行以下操作,然后使用此布尔值在窗口上显示“ y”或“ n”

from graphics import *      

def inside(test_Point, P1, P2):
    ''' 
    determines if the test_Point is inside
    the rectangle with P1 and P2 at opposite corners

    assumes P1 is upper left and P2 is lower right
    '''
    tX = test_Point.getX()
    tY = test_Point.getY()

    # first the x value must be in bounds
    t1 = (P1.getX() <= tX) and (tX <= P2.getX())

    if not t1:
        return False
    else:
        return (P2.getY() <= tY) and (tY <= P1.getY())


win = GraphWin("Box", 600, 600)

yes_box = Rectangle(Point(200, 150), Point(350, 50))
yes_box.setOutline('blue')
yes_box.setWidth(1)
yes_box.draw(win)

# where was the mouse clicked?
t = win.getMouse()

# is that inside the box?
if inside(t, yes_box.getP1(), yes_box.getP2()):
    text = 'y'
else:
    text = 'n'

# draw the 'y' or 'n' on the screen
testText = Text(Point(200,300), text)
testText.draw(win)

exitText = Text(Point(200,350), 'Click anywhere to quit')
exitText.draw(win)

win.getMouse()
win.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM