2016-11-17 3 views
0

J'ai une image de bouton de démarrage que j'essaie de transformer en bouton dans mon programme. Cependant, je crois que je fais mal les maths ou quelque chose de mal parce que ça ne marche pas. Fondamentalement, ce que j'essaye de faire est si la personne clique sur le bouton, il lancera une déclaration de si. Des idées? Merci d'avance!Création d'un bouton (à partir de l'image) dans les graphiques de Zelle

#Assigning Mouse x,y Values 
mousePt = win.getMouse() 
xValue = startImage.getHeight() 
yValue = startImage.getWidth() 

#Assigning Buttons 
if mousePt <= xValue and mousePt <= yValue: 
    hour = 2 

est startimage l'image que je veux faire un bouton. heure est une variable indiquée dans un autre code.

Répondre

0

Vous comparez des pommes à des oranges. Cette ligne:

if mousePt <= xValue and mousePt <= yValue: 

est à peu près la même chose que dire:

if Point(123, 45) <= 64 and Point(123, 45) <= 64: 

Il est absurde de comparer les points de largeurs et hauteurs. Vous devez combiner les largeurs et hauteurs avec la position centrale de l'image et extraire les X & valeurs Y de la position de la souris:

from graphics import * 

win = GraphWin("Image Button", 400, 400) 

imageCenter = Point(200, 200) 
# 64 x 64 GIF image from http://www.iconsdb.com/icon-sets/web-2-green-icons/video-play-icon.html 
startImage = Image(imageCenter, "video-play-64.gif") 
startImage.draw(win) 

imageWidth = startImage.getWidth() 
imageHeight = startImage.getHeight() 

imageLeft, imageRight = imageCenter.getX() - imageWidth/2, imageCenter.getX() + imageWidth/2 
imageBottom, imageTop = imageCenter.getY() - imageHeight/2, imageCenter.getY() + imageHeight/2 

start = False 

while not start: 
    # Obtain mouse Point(x, y) value 
    mousePt = win.getMouse() 

    # Test if x,y is inside image 
    x, y = mousePt.getX(), mousePt.getY() 

    if imageLeft < x < imageRight and imageBottom < y < imageTop: 
     print("Bullseye!") 
     break 

win.close() 

Cette icône particulière apparaît comme un cercle, la zone que vous pouvez cliquer comprend son boîte englobante rectangulaire dont une partie est à l'extérieur du cercle. Il est possible de limiter les clics à exactement l'image visible, mais cela prend plus de travail.