当前位置:网站首页>pygame拖动条的实现方法
pygame拖动条的实现方法
2022-08-02 14:09:00 【天山没有长寿茶】
实现效果如下:
我们以音量的调整为例,首先绘制水平直线与实心圆,具体位置、大小可自己指定:
# 实心圆横坐标位置
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
边栏推荐
- Win7遇到错误无法正常开机进桌面怎么解决?
- Win10电脑需要安装杀毒软件吗?
- 神经网络可以解决一切问题吗:一场知乎辩论的整理
- What should I do if I install a solid-state drive in Win10 and still have obvious lags?
- 5. Use RecyclerView to elegantly achieve waterfall effect
- 关于c语言的调试技巧
- 流,向量场,和微分方程
- What should I do if the Win10 system sets the application identity to automatically prompt for access denied?
- PyTorch(14)---使用现有的模型及其修改
- 神经网络的设计过程
猜你喜欢
【我的电赛日记(三)】STM32学习笔记与要点总结
FP7195转模拟恒流调光芯片在机器视觉光源的应用优势
FP7126降压恒流65536级高辉无频闪调光共阳极舞台灯RGB驱动方案
source /build/envsetup.sh和lunch)
【我的电赛日记(一)】HMI USART串口屏
PyTorch(14)---使用现有的模型及其修改
What should I do if I install a solid-state drive in Win10 and still have obvious lags?
PyTorch③---torchvision中数据集的使用
win10任务栏不合并图标如何设置
FP5207电池升压 5V9V12V24V36V42V大功率方案
随机推荐
FP7128内置MOS降压恒流调光深度0.01%高辉共阳调光方案
Binder ServiceManager解析
HAL框架
将SSE指令转换为ARM NEON指令
关于c语言的调试技巧
Mapreduce环境详细搭建和案例实现
为vscode配置clangd
ARMv8虚拟化
DP4344兼容CS4344-DA转换器
Tensorflow张量生成
FP7122降压恒流内置MOS耐压100V共正极阳极PWM调光方案原理图
How to solve Win11 without local users and groups
使用预训练语言模型进行文本生成的常用微调策略
SQL的通用语法和使用说明(图文)
【系统设计与实现】基于flink的分心驾驶预测与数据分析系统
STM32F1和F4的区别
Fast advanced TypeScript
DP4056电源保护芯片锂电池pin对pinTP4056
What should I do if I install a solid-state drive in Win10 and still have obvious lags?
基于51单片机和物联网的智能家居系统(ESP8266物联网模块)