栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pygame拖动条的实现方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pygame拖动条的实现方法

实现效果如下:

我们以音量的调整为例,首先绘制水平直线与实心圆,具体位置、大小可自己指定:

# 实心圆横坐标位置
VPOS = 300

# 绘制水平直线,参数依次为(surface, color, start_pos, end_pos, width)
pygame.draw.line(self.screen, self.BLUE, (150, 900), (450, 900), 5)
# 绘制实心圆作为按钮,参数依次为(surface, color, center, radius, width)
volume_button = pygame.draw.circle(self.screen, self.GREEN, (VPOS, 900), 10, width=0)

为了拖动手感更好,我们只要按下按键后直到抬起期间均可拖动圆的位置。为此我们设置变量值volume_state,当该值为0时,实心圆不会随着鼠标改变位置;而该值为1时,则会随着鼠标改变。一般状态下该值为0,当鼠标在实心圆上按下时刻我们就令该值为1,直到鼠标抬起,该值变回0。

# 默认为不可调整状态
volume_state = 0

# pygame循环
while running:
    # 当检测到鼠标在按钮处按下,即可调整按钮位置与音量
    if pygame.mouse.get_pressed()[0]:
        if volume_button.collidepoint(pos):
            volume_state = 1

    # 当检测到鼠标抬起,则停止调整,在下一次鼠标按下后不可再变化
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONUP and volume_state:
            volume_state = 0

    # 获取鼠标当前位置
    pos = pygame.mouse.get_pos()

    # 调整音量具体过程
    if volume_state:
        # 圆的位置与鼠标横坐标位置一致
        VPOS = pos[0]
        # 限制按键圆心位置在水平直线上
        if VPOS > 450:
            VPOS = 450
        elif VPOS < 150:
            VPOS = 150
        # 实际音量值
        volume = (VPOS - 150) / 300.0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号