【Godot4.2】按钮生成函数库buttonDB

概述

前面文章总结了Godot4.2中的按钮类控件。当然那只是开胃菜,基于按钮控件相关的基础知识总结出一个按钮生成函数库,并在函数库基础上创建工具栏(自定义控件)才是我的最终目标。

函数库代码

函数库代码会不断改进更新,本文内容也会不断扩充。

# ========================================
# 名称:buttonDB
# 类型:静态函数库
# 描述:专用于【生成按钮】的静态函数库
# 作者:巽星石
# Godot版本:v4.2.1.stable.official [b09f793f5]
# 创建时间:202422618:45:28
# 最后修改时间:202422721:15:50
# ========================================

class_name buttonDB

# ================== 【普通按钮】 ==================
# 生成并返回普通纯文本按钮
static func button(text:String = "Button") -> Button:
	var btn = Button.new()
	btn.text = text
	return btn

# ================== 【带图标按钮】 ==================
# 生成并返回带有图标的按钮 - 图标在左,文本在右
static func icon_left_button(icon:Texture2D,text:String = "Button") -> Button:
	var btn = button(text)
	btn.icon = icon
	return btn

# 生成并返回带有图标的按钮 - 图标在右,文本在左
static func icon_right_button(icon:Texture2D,text:String = "Button") -> Button:
	var btn = icon_left_button(icon,text)
	btn.icon_alignment = HORIZONTAL_ALIGNMENT_RIGHT
	return btn
	
# 生成并返回带有图标的按钮 - 图标在上,文本在下
static func icon_top_button(icon:Texture2D,text:String = "Button") -> Button:
	var btn = icon_left_button(icon,text)
	btn.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
	btn.vertical_icon_alignment = VERTICAL_ALIGNMENT_TOP
	return btn

# 生成并返回带有图标的按钮 - 图标在下,文本在上
static func icon_bottom_button(icon:Texture2D,text:String = "Button") -> Button:
	var btn = icon_left_button(icon,text)
	btn.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
	btn.vertical_icon_alignment = VERTICAL_ALIGNMENT_BOTTOM
	return btn

# ================== 【纯图标无文本按钮】 ==================
# 纯图标按钮
static func ToolButton(icon:Texture2D,tool_tip:String = "") -> Button:
	var btn = icon_left_button(icon,"")
	btn.tooltip_text = tool_tip
	return btn

# ================== 【带图标按钮】 ==================
# 生成并返回CheckButton
static func check_button(text:String = "CheckButton",icon:Texture2D = null,checked_icon:Texture2D = null,unchecked_icon:Texture2D = null,tool_tip:String = "") -> CheckButton:
	var btn = CheckButton.new()
	btn.text = text
	btn.icon = icon
	if checked_icon:
		btn.set("theme_override_icons/checked",checked_icon)    # 选中图标
	if unchecked_icon:
		btn.set("theme_override_icons/unchecked",unchecked_icon)  # 未选中图标
	btn.tooltip_text = tool_tip
	return btn


# ================== 【按钮组】 ==================
# 生成并返回使用相同"ButtonGroup"的按钮组
static func BtnGup(texts:PackedStringArray) -> Array[Button]:
	var arr:Array[Button] = []
	var gup = ButtonGroup.new()
	for text in texts:
		var btn = Button.new()
		btn.text = text
		btn.toggle_mode = true
		btn.button_group = gup
		arr.append(btn)
	return arr
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巽星石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值