Blender之UILayout
目标
- [x] 总结Blender面板布局
总结
Blender面板中界面组件是通过UILayout进行组织的. 其主要属性如下:
- row() 定义横向子布局.
- column() 定义竖向子布局.
- split() 按比例拆分行
- column_flow() 定义多列的竖向子布局(根据列,计算行数, 然后按逐列摆放组件)
- box() 定义有外框的竖向子布局
- menu_pie() 饼状菜单
- operator() 放置调用操作器的按钮
- prop() 展示RNA,并把它放在布局中
- label() 显示标签
- separator() 分隔元素
代码示例
class SimplePanel(bpy.types.Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = "TOOLS"
bl_category = "Test"
bl_label = "测试工具"
bl_context = "objectmode"
def draw(self, context):
# Store reference to context.scene
scn = context.scene
# Store reference to self.layout
lay = self.layout
# Create box
box = lay.column_flow(2)
box.operator("object.simple_operator", text="Print #1")
box.prop(scn, 'encouraging_message')
box.operator("object.simple_operator", text="Print #1")
box.prop(scn, 'encouraging_message')
box.operator("object.simple_operator", text="Print #1")
# Create another box
box = lay.box()
# Create a row within it
row = box.row()
# We can jam a few things on the same row
row.operator("object.simple_operator", text="Print #2")
row.prop(scn, 'encouraging_message')
# Create yet another box
box = lay.box()
# Create a row just for a label
row = box.row()
row.label('There is a split row below me!')
# Create a split row within it
row = box.row()
splitrow = row.split(percentage=0.2)
# Store references to each column of the split row
left_col = splitrow.column()
right_col = splitrow.column()
left_col.operator("object.simple_operator", text="Print #3")
right_col.prop(scn, 'encouraging_message')
# Throw a separator in for white space...
lay.separator()
# We can create columns within rows...
row = lay.row()
col = row.column()
col.prop(scn, 'my_int_prop')
col.prop(scn, 'my_int_prop')
col.prop(scn, 'my_int_prop')
col = row.column()
col.prop(scn, 'my_float_prop')
col.label("I'm in the middle of a column")
col.prop(scn, 'my_float_prop')
# Throw a few separators in...
lay.separator()
lay.separator()
lay.separator()
# Same as above but with boxes...
row = lay.row()
box = row.box()
box.prop(scn, 'my_int_prop')
box.label("I'm in the box, bottom left.")
box = row.box()
box.prop(scn, 'my_bool_prop')
box.operator("object.simple_operator", text="Print #4")
@classmethod
def register(cls):
print("Register class: %s" % cls.bl_label)
@classmethod
def unregister(cls):
print('Unregister class: %s' % cls.bl_label)
Blender之UILayout的更多相关文章
- Blender插件编写指南
前言 Blender插件是Blender的利器, 用户可以使用各种插件扩充Blender的功能. Blender Python插件以bpy.props, bpy.types.Operator, bpy ...
- Blender 之修改器代码分析
Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改.生成.形变.模拟)列出所有的修改器.也可以空格键 ...
- Blender 之 Splash 代码分析
注:以下内容基于 Blender 2.7x 版本工程,其它低版本可能有改动. Blender启动完成时,会出现一个画面,英文叫Splash.默认是打开的,可以在设置里关闭.在文件菜单里点击用户首选项( ...
- Blender 脚本之 Operator 初探
addon(插件)用来扩展 Blender 的功能,跟其他软件里的 plugin(插件)一样,去掉不会影响软件的运行.插件可以加到 Blender 的用户偏好设置目录里,或者就在你所编辑的.blend ...
- Blender使用基础
快捷键 -- 鼠标放在“大纲视图” -- .(小键盘) 定位到所选对象(该键的英文为period) -- 鼠标放在“3D视图” -- n 打开3D视图右面属性面板(把鼠标放在面板上,按F5可以左右切 ...
- blender源代码编译
blender源码路径(svn):https://svn.blender.org/svnroot/bf-blender/trunk/blender/ 依赖外部Lib(svn):https://svn. ...
- Blender to XPS(blender 2.7x Internal materials)
Things we are gonna need are Blender 2.7x www.blender.org/ XPS tools addon for Blender A model made ...
- XPS to Blender 2.7x
XPS to Blender 2.7x(Blender internal the easy way) Things we are gonna need are Blender 2.7x www.ble ...
- Python Ogre Blender(转载)
http://www.cppblog.com/Charlib/archive/2010/05/31/python_ogre_blender_1.html PyOgre入门以及如何使用Blender制作 ...
随机推荐
- pop的运用
pop():弹出列表最后一个元素 练习题: num_list = [12, 45, 34,13, 100, 24, 56, 74, 109] one_list = [] two_list = [] t ...
- webpack-dev-middleware 与 webpack-hot-middlware
dev-middleware: live reload的实现: 思考一下我們要如何更新(live reload)呢? 當然是需要取得 webpack 編好的資料啊,於是就需要在從 request 到 ...
- 跟着alex学习了格式化输出,最大的感受就是编程这个事,一定要自己动手去做,才能学会。看会和自己会做完全是两码事
学习了三天,现在学到格式化输出.看视频教程,alex和那个美女学员打情骂俏,真是羡慕啊. 教程看懂很容易,完全会了. 可是上手编程马上歇菜. 就这么几行的代码,我遇到了n多错误 首先是中文输入的错误, ...
- php第二十节课
JSON弹窗 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- DP——最长上升子序列(LIS)
DP——最长上升子序列(LIS) 基本定义: 一个序列中最长的单调递增的子序列,字符子序列指的是字符串中不一定连续但先后顺序一致的n个字符,即可以去掉字符串中的部分字符,但不可改变其前后顺序. LIS ...
- Luogu P1629 邮递员送信
P1629 邮递员送信 题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要 ...
- Unity jointmoto
jointmoto是模拟电机的,他的参数包括了最高车速和最大扭矩 扭矩总是正数,而目标车速决定了方向
- 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库
需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...
- 18.match_phrase的用法
主要知识点: match_phrase的使用场景 match_phrase的用法 match_phrase的原理 一.什么是近似匹配 match_phrase的使用场景 现假设有两个句子 ...
- SCI 论文金句
SCI 不会写?其实英语基础好一点,文献多看一点,多写写自然就能自己写出来了.当然,你肯定会说英语真的好难,好吧,就知道你们懒得学英语了.我给你们整理了一套万能模板,涵盖了论文不同部分的常用句型. 摘 ...