【pygameGUI更新日志】来啦!滑条组件,喜欢吗?
本帖最后由 cjjJasonchen 于 2024-2-14 21:10 编辑Scrollbar —— 滑条
许久不见,想我否?{:10_278:}
这次更新我带来了滑条哦~
本期demo展示与解读
(这是播放音频的例子,上次说的圆角矩形也做了一个例子)
这些各种形状的边框,突起、凹陷。。。。。之类的效果在正式版发布后会陆续更新,以下是源码
上方gif动图笑点解析:
| 滑条的滑块在拖动时可以展示百分比(在使用时用label添加的功能,非滑条自带
| 播放与暂停键采用了最新的 switch ——开关组件,支持帧动画(这里使用了渐变效果,在使用时使用Player添加的动画效果,非 switch 自带
| 滑条左右两边的 ”-“ ”+“ (后续使用Button添加的,点击可移动滑块,非滑条自带
| 音乐是”打飞机“
| 下方简介区滚动鼠标滚轮便可上下滑动,无需拖动滑块(是在滑块的command中添加的,非滑条组件自带效果
| 简介展示框使用了上次@Twilight6同学要求的圆角矩形
(使用的是pygame的draw方法,非frame自带,很抱歉并没有达到你所说的效果,
我没有使用函数绘制出真正圆滑的圆角矩形,只是在四个角简单的画了个圆,
如果要达到斜率平滑变化的圆角,需要更复杂的算法)
源码:
接下来是一些意见的征求:
| 1、目前帧动画(之前那个软软弹弹的按钮效果)目前给他起的名字是“Player——播放器“,想问问各位这样是否妥当,是否应该修改为”animation——动画“?
| 2、”switch——开关“组件,目前的属性、变量名似乎也有所不妥,见下方代码:
def __init__(self,
group=None, # 加入到哪个Group中,该组件通常是Frame
pos = ,size=, # 位置、大小
active_textures = [(240,240,240),], # 接受一个元组/列表或函数,代表按钮上的图案
init_textures = [(250,250,250),], # 接受一个元组/列表或函数,代表按钮上的图案
down_textures = [(230,230,230),], # 接受一个元组/列表或函数,代表按钮上的图案
block = True, # 当鼠标位于上方时是否打开阻断
unblock=False, # 是否免疫阻断
mouse_button = 1, # 响应哪个按钮
down_command = , # 当按钮被点击时调用(按下时)
command = , # 当按钮被点击时调用(抬起时)
active_command = , # 当按钮处于鼠标下方时,反复调用
repeat=-1, # 长按时按照多少帧的间隔调用command
):
active_textures——活动纹理、 init_textures——初始纹理、down_textures——按下纹理
之前这些名字在按钮和滑块中全部是没有”s“ 的,接受的是单个函数或者图片对象
现在这些参数接受的全是列表或者是元组。。。
但是,down_command = , command = ,active_command = ,这三个参数接受的同样也变成了列表和元组,我却没有加s,是否需要修改?
个人认为全部没有s或许会更方便些,所以就没改,留到发日志的时候和大伙探讨一下{:10_328:}
| 3、目前pygameGUI的主要了理念是:尽可能的提高自由度,减少繁杂的操作
(相比tkinter,他会更复杂却不难以使用,但成品的美观程度会远远超越tkinter,
所以,我希望各位在使用时看着我写的教程或者注释,而不是把它背下来{:10_283:} )
我希望使用者可以自己写组件,但是由于我在之前写代码的时候似乎使用了过多的私有变量,
以至于继承变得很低效,使用者自己写组件时似乎只能继承”widget“也就是组件基类,而不能继承”Button“、”Frame“之类的已经做好的组件
(这些私有变量是比较有用的,在各位修改实例化组件的属性时,可以大幅度减少bug和使用者的代码行数)
例如:frame.image = xxxxxxx
如果把私有变量删掉,后面还要再加一句
frame.image = xxxx
frame.rect = frame.image.get_rect()
如果有私有变量的话,多出来的这些我就可以使其在修改属性时自动执行!{:10_275:}
以上,此次开发日志汇报完毕!请各位鱼油认真检阅!希望pygameGUI早日完成,有机会开源到pypi!
接下来的目标主要是做输入框啦~加油!
求评论,请勿评分!!!
@小甲鱼 @不二如是 @学习编程中的Ben @liuhongrun2022 @中英文泡椒 @歌者文明清理员 @陶远航 @小甲鱼 @Mike_python小 @python爱好者. @zhangjinxuan @陶远航
@琅琊王朝 @中英文泡椒 @Ewan-Ahiouy
【pygameGUI 更新日志】我更新了新的内容 Scrollbar——滑条组件 快来看看吧~ 加不加s应该取决于传来的参数是iterable or no 歌者文明清理员 发表于 2024-2-14 19:38
加不加s应该取决于传来的参数是iterable or no
收到,感谢你的意见{:10_275:}
不错{:5_106:} liuhongrun2022 发表于 2024-2-14 19:58
不错
感谢回复!{:10_340:} 太牛了! def __init__(self,
group=None, # 加入到哪个Group中,该组件通常是Frame
pos = ,size=, # 位置、大小
active_textures = [(240,240,240),], # 接受一个元组/列表或函数,代表按钮上的图案
init_textures = [(250,250,250),], # 接受一个元组/列表或函数,代表按钮上的图案
down_textures = [(230,230,230),], # 接受一个元组/列表或函数,代表按钮上的图案
block = True, # 当鼠标位于上方时是否打开阻断
unblock=False, # 是否免疫阻断
mouse_button = 1, # 响应哪个按钮
down_command = , # 当按钮被点击时调用(按下时)
command = , # 当按钮被点击时调用(抬起时)
active_command = , # 当按钮处于鼠标下方时,反复调用
repeat=-1, # 长按时按照多少帧的间隔调用command
):
函数不要放那么多形参,设置的参数用元组传递,或者用打包传参。元组名字就叫sittingsgrp zhangchenyvn 发表于 2024-2-14 20:12
函数不要放那么多形参,设置的参数用元组传递,或者用打包传参。元组名字就叫
你是说用 ”*“ 和 ”**“ ?
然后具体哪些参数写在注释里? cjjJasonchen 发表于 2024-2-14 20:15
你是说用 ”*“ 和 ”**“ ?
然后具体哪些参数写在注释里?
对。建议不要改成打包传参,元组传参更好一点。因为元组名能够体现参数作用。 def __init__(self, sittingsgrp):
xxx = sittingsgrp
yyy = sittingsgrp
…… zhangchenyvn 发表于 2024-2-14 20:19
这样的话”sittingsgrp“是不是还要按照一定顺序?如果顺序混论,或者我希望少输入几个参数应该怎么办呢?{:10_272:} cjjJasonchen 发表于 2024-2-14 20:21
这样的话”sittingsgrp“是不是还要按照一定顺序?如果顺序混论,或者我希望少输入几个参数应该怎么办呢 ...
这就是简洁传参的局限性。。。顺序一定要有。省参数用:sittingsgrp = None,后面要写一下
if sittingsgrp == None:
……
elif sittingsgrp == None:
…… 另外,输入框如果要中文可以尝试用一本书,例如《三体》,然后用 xpinyin 提取字的拼音,在输入拼音时显示字
我之前做过,是另外项目的,但删了(可见我真没啥耐心…)
三体可以去网上找免费下载的东西 zhangchenyvn 发表于 2024-2-14 20:25
这就是简洁传参的局限性。。。顺序一定要有。省参数用:sittingsgrp = None,后面要写一下
如果这样的话我就不太愿意使用打包传参了,因为在实例化时,会有很多很多的参数无需输入,只需使用默认值即可,而且如果输入错误了,报错也很方便。
而且由于参数过多,按照顺序输入看似美观,但似乎太长了,很多时候我们只需要两三个参数,其他的会在后续使用函数设定的方式进行修改,例如 ”位置“,”纹理“,”回调函数“ 之类的。
使用打包传参似乎并没有显得简洁,反而更复杂了{:10_266:} 歌者文明清理员 发表于 2024-2-14 20:29
另外,输入框如果要中文可以尝试用一本书,例如《三体》,然后用 xpinyin 提取字的拼音,在输入拼音时显示 ...
不需要,现在的版本已经支持了,我之前有做过demo,可以直接使用输入法了,只需要使用os组件复制一份输入法的图片贴上去就好啦~{:10_279:} cjjJasonchen 发表于 2024-2-14 20:29
如果这样的话我就不太愿意使用打包传参了,因为在实例化时,会有很多很多的参数无需输入,只需使用默认 ...
对对对,其实,我比较喜欢单独写def getinputs():
Xxxx 你系哪里人?我想找一下老乡。 歌者文明清理员 发表于 2024-2-14 20:29
另外,输入框如果要中文可以尝试用一本书,例如《三体》,然后用 xpinyin 提取字的拼音,在输入拼音时显示 ...
如果你有需要的话我去找一找,提前把上次做的demo发出来给大家看看 zhangchenyvn 发表于 2024-2-14 20:32
你系哪里人?我想找一下老乡。
上海的