根据pygame中的点击更改图像 [英] change image based on click in pygame

查看:65
本文介绍了根据pygame中的点击更改图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我进行了谷歌搜索并搜索了我的两本 Python 初学者书籍,以找到如何执行此操作.我认为这必须是一项简单的任务.基本上,我正在使用 python 使用 pygame.

I've done a google search and searched through my two python beginner books to find how to do this. I assume it has to be a simple task. Basically, I'm working with pygame with python.

我希望如果我单击 button1_image,它会更改为 button1select_image,对吗?如果您单击 button2_image,它会将 button1select_image 设置回 button1_image,并将 button2_image 更改为 button2select_image.

I want that if I click on the button1_image, it changes to button1select_image, right? And if you click on button2_image, it sets button1select_image back to button1_image, and button2_image changes to button2select_image.

所以我想知道它是一个简单的 if else 语句还是更复杂.显然,按钮稍后会做其他事情,但我找不到关于如何根据用户鼠标的点击来做这样的事情的教程.

So what I am wondering is if it is a simple if else statement or is it much more complicated. Obviously, the buttons will do something else later but I cannot find a tutorial on how to do something like this based on the click of the users mouse.

# Button Mouse Click Image Change
# Demonstrates changing from one button image to another based on click of mouse.

from livewires import games, color

games.init(screen_width = 281, screen_height = 500, fps = 50)

button1_image = games.load_image("button1.png", transparent = False)
button1 = games.Sprite(image = button1_image, x = 28,y = 18)
games.screen.add(button1)

button1select_image = games.load_image("button1select.png", transparent = False)
button1select = games.Sprite(image = button1select_image, x = 28,y = 18)
games.screen.add(button1select)

button2_image = games.load_image("button2.png", transparent = False)
button2 = games.Sprite(image = button2_image, x = 56,y = 18)
games.screen.add(button2)

button2select_image = games.load_image("button2select.png", transparent = False)
button2select = games.Sprite(image = button2select_image, x = 56,y = 18)
games.screen.add(button2select)

games.screen.mainloop()

推荐答案

在这里,我把它提了出来,以展示鼠标的工作原理.行 if event.button == 1: 检查是否已按下鼠标左键,如果您想要鼠标右键,请将 1 更改为 2.

Here, I whipped this up to show how the mouse works. The line if event.button == 1: checks if the left mouse button has been pressed, change the 1 to a 2 if you want the right mouse button.

import pygame, sys
from pygame.locals import *

TIMER = 30
SCREEN_X = 200
SCREEN_Y = 200

screen = pygame.display.set_mode((SCREEN_X, SCREEN_Y))
clock = pygame.time.Clock() #tick-tock

ending = button1 = button2 = False

corner1 = (28,18)  #Top Left corner of button 1
corner2 = (56,18)  #Top Left corner of button 2

image_length = 100 #length of the buttons
image_height = 100 #height of the buttons

counter = 0

#Main Loop:
while ending==False:
    counter+=1
    clock.tick(TIMER)
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                ending=True # Time to leave
                print("Game Stopped Early by user")
        elif event.type == MOUSEBUTTONDOWN:
            if event.button == 1:
                mouse_x, mouse_y = event.pos
                if (mouse_x >= corner1[0]) and (mouse_x <= corner1[0]+image_length) and (mouse_y >= corner1[1]) and (mouse_y <= corner1[1]+image_height):
                    print ("Button one is selected")
                    button1=True
                    button2=False
                elif (mouse_x >= corner2[0]) and (mouse_x <= corner2[0]+image_length) and (mouse_y >= corner2[1]) and (mouse_y <= corner2[1]+image_height):
                    print ("Button two is selected")
                    button1=False
                    button2=True
                else:
                    print ("That's not a button")
                    button1=False
                    button2=False
    if counter == TIMER:  #prints the statements once a second
        counter=0
        if button1==True:
            print ("Button one is currently selected")
        elif button2==True:
            print ("Button two is currently selected")
        else:
            print ("No buttons currently selected")

在底部的打印语句处.如果 button1 或 button2 变量分别为 True,只需将所选图像用于按钮 1 或 2.否则将是如果没有选择任何图像,那么您将两个图像作为未选择的按钮.如果您不知道如何使用图像等,请查看这里:http://www.pygame.org/docs/ 它真的帮助了我.自己尝试一下,如果您仍然遇到问题,Stack Exchange 仍然会在这里回答您的问题 :)

At the print statements at the bottom. Simply use the selected image for buttons 1 or 2 if the button1 or button2 variable, respectively, is True. The else would be if none are selected so you have both of the images as the unselected button. If you don't know how to use images and the like, have a look around here: http://www.pygame.org/docs/ It really helped me. Try it out yourself, and if you're still stuck Stack Exchange will still be here for your questions :)

希望能帮到你

这篇关于根据pygame中的点击更改图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆