如何使用Discord.py设置Embed字段的两行两列排版?
Discord.py Embed 两行两列字段排版解决方案
要实现两行两列的字段排版,核心是利用inline=True的特性,同时控制字段内容的长度,确保同一行的两个字段总宽度不超过Embed容器的一行空间。
问题原因
你设置inline=True却每行只显示一个字段,是因为单个字段的名称或内容过长,占满了Embed的整行宽度,导致无法和其他字段并排。
解决步骤
- 缩短字段名称/内容:尽量精简字段的名称和值,让两个字段的总宽度控制在Embed一行的一半以内。
- 按顺序添加字段:先添加第一行的两个字段(都设
inline=True),再添加第二行的两个字段(同样设inline=True),Discord会自动将前两个放在第一行,后两个放在第二行。
代码示例
from discord import Embed # 创建Embed对象 activity_embed = Embed(title="活动时间安排", color=0x0099ff) # 第一行:开始日期 + 开始时间 activity_embed.add_field(name="开始日期", value="2024-05-20", inline=True) activity_embed.add_field(name="开始时间", value="14:00", inline=True) # 第二行:结束日期 + 结束时间 activity_embed.add_field(name="结束日期", value="2024-05-20", inline=True) activity_embed.add_field(name="结束时间", value="16:00", inline=True) # 发送Embed(示例) # await ctx.send(embed=activity_embed)
特殊情况处理
如果字段内容无法缩短,可以在每行的两个字段之间添加一个空字段占位(设inline=True且名称和值都用零宽空格\u200b填充),强制让下一个字段换行到第二行:
activity_embed.add_field(name="开始日期", value="2024-05-20 星期六", inline=True) activity_embed.add_field(name="开始时间", value="下午2点 (北京时间)", inline=True) # 添加零宽空格占位的空字段,强制换行 activity_embed.add_field(name="\u200b", value="\u200b", inline=True) activity_embed.add_field(name="结束日期", value="2024-05-20", inline=True) activity_embed.add_field(name="结束时间", value="下午4点", inline=True)
内容的提问来源于stack exchange,提问作者Cohen
相关产品推荐
相关产品推荐

