§7.4 3D 进阶¶
字数 497 个 代码 28 行 图片 1 张 阅读时间 2 分钟 访问量
一、自定义 3D 画布¶
1.1 绑定事件¶
每个 3D 对象都有三个基本的功能,分别为平移(translate
)、旋转(rotate
)和缩放(scale
),使用者可以根据自身需要,自定义绑定事件并调用相关的方法。比如说,我们现在想做这样一个绑定:按下等号键和减号键可以使每个 3D 对象自身的大小进行缩放,那么就可以按下面的步骤做。
分析:使 3D 对象自身大小进行缩放需要调用方法 scale
,且缩放中心就是每个 3D 对象自身的几何中心,参数 center
值为 None
,也就是默认值的时候,它会按自身的几何中心进行缩放。这里可以使用 Canvas3D
作为容器控件,也可以使用 Space
,这并不会影响到这个功能的实现。
源代码
实际上,§1.2 认识 tkintertools 中就有一张和这个类似的图片。
1.2 注意事项¶
上文提到,使用 Space
也可以,不会有任何影响,但我们在前面了解到,Sapce
实现了一些内置功能,比如旋转,这些内置功能是通过绑定事件来实现的,而 tkinter
中绑定事件一般是会覆盖前面的,上面为什么可以呢?
其实,Space
确实绑定了一些事件,但是并没有涉及到按键 + 和 -,因此没有上面影响,但这并不代表所有的事件都没有影响,在使用 Space
的时候,我们尽量要避开那些绑定的事件,如果确实需要绑定新的事件,但又不想覆盖掉旧的的事件,那么在绑定新事件的时候,你应该将参数 add
设为 '+'
。
提示
此处不要把 add
参数的值和前面的绑定加号事件混淆了,'+'
表示新事件的绑定是附加的,而非原来的覆盖。
比如像下面这样: