PythonStudio是一个极强的开发Python的IDE工具,它使用的是Delphi的控件,常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点,也作为PythonStudio的参考。
从1.2.1版开始,PythonStudio又增加了很多新的控件。
TCategoryButtons是一个分类按钮组,很适合做侧边栏
组件位置
TCategoryButtons位于Additional下
搭建按钮组
从层级来看,按钮组层级关系是
Categories->TButtonCategory->Items->Button
所以,在搭建过程中,需要先建立 TButtonCategory,比如图中显示的手机、电脑、电视这一个类别,然后再建立 按钮,如华为,苹果等。
建立类别
把组件建立在窗体中后,就是一个方框,右键点方框,选择Categories Editor,或双击这个方框,就可以建立类别了
如图,这个对话框有四个按钮,分别是新建类别、删除类别、上移和下移。
命名类别
选中类别后,修改其Caption属性即可
增加按钮、命名按钮
先点类别左边的箭头,出现Items,右键点Item,选择“Collection Editor”,或双击Items,编辑按钮
这个操作和建立类别一样,不多说
设置格式
对齐
如果想变成侧边栏,设置Align为alLeft
不想变那就随意
按钮选项
boAllowReorder, //允许用户在运行时可拖动按钮改变顺序
boAllowCopyingButtons, //允许用户在运行时复制按钮
boFullSize, //设置按钮的最大宽度,达到整个容器的宽度
boGradientFill, //Color作为结束色渐变填充
boShowCaptions //开关按钮标题,类别的标题仍然显示
boVerticalCategoryCaptions, //当一个类别展开后,此类别标题出现在垂直端
boBoldCaptions, //类别标题加粗
boUsePlusMinus, //使用+/-标志类别的展开和折叠,否则使用箭头标志
boCaptionOnlyBorder //当类别标题折叠起来时,在按钮周围画边框
其他外观选项
BackgroundGradientColor := clNone; //背景渐变填充颜色
BackgroundGradientDirection := gdHorizontal; //背景渐变填充方向
BorderStyle := bsNone; //边框风格,设成无边框
ButtonFlow := cbfVertical; //类别按钮方向
ButtonHeight := 48; //类别里的按钮高
ButtonWidth := 48; //类别里的按钮宽
Color := clWhite; //背景色
GradientDirection := gdHorizontal; //前景渐变色填充方向
HotButtonColor := RGB(254,202,115); //按钮的热点颜色
图标
如果你愿意给按钮加一些图标,需要也加入 TImageList 组件,用法在前面TButtonEdit里讲过,可以去看
然后在Images加进后,在各个按扭的ImageIndex中设置索引号
添加方法
给每个按钮加一个Onclick事件就完了。
一些简单的代码
修改已有类别或按钮的属性
可以用类似如下的形式:
self.CategoryButtons1.Categories[0].Items[0].Caption="新的标题"
用Categroies[i]来确定类别,用Items[i]来确认按钮,Caption只是一个属性的示例。
建立新的类别或按钮
假如添加组件后,并没有使用编辑器进行类别和按钮的添加,可以采取以下方式建立完整的内容
# 新建类别
self.CategoryButtons1.Categories.Add()
# 类别显示的标题
self.CategoryButtons1.Categories[0].Caption="手机"
# 在类别下新建按钮,并设置标题
self.CategoryButtons1.Categories[0].Items.Add()
self.CategoryButtons1.Categories[0].Items[0].Caption="华为"
self.CategoryButtons1.Categories[0].Items.Add()
self.CategoryButtons1.Categories[0].Items[1].Caption="苹果"
self.CategoryButtons1.Categories[0].Items.Add()
self.CategoryButtons1.Categories[0].Items[2].Caption="小米"
# 外观设置
self.CategoryButtons1.ButtonOptions= [boFullSize, boGradientFill, boShowCaptions, boVerticalCategoryCaptions]
效果如上图
事件的处理
通过对整个CategoryButton的点击事件,利用SelectedItem,可以对当前按钮进行处理,如:
def CategoryButtons1Click(self, Sender):
# 显示点中按钮的标题
ShowMessage(Sender.SelectedItem.Caption)
# 显示点中按钮所属的类别标题
ShowMessage(Sender.SelectedItem.Category.Caption)