rhino6.0 python中ETO的组件案例
zhezhongyun 2025-08-02 22:45 2 浏览
1.按钮组件
按钮几乎放置在每个对话框上。创建一个新的按钮很简单。使用forms.Button并指定Text显示在按钮面上。除了创建新按钮外,通常还通过.Click事件附加一个操作。使用 +=语法,如下所示将操作绑定到按钮。
self.m_button = forms.Button(Text = 'OK')
self.m_button.Click += self.OnButtonClick
在类定义中稍后列出的绑定方法,如果点击按钮将运行。
Eto.Dialog 类 有两个特殊保留的按钮名称,即 DefaultButton 和 AbortButton。 DefaultButton 名称将创建一个标准按钮,并且如果使用 Enter Key,它将接收点击事件。 AbortButton 是一个按钮,如果使用 键,它将接收 .Click 事件。 这些按钮是通过控件的名称简单分配的,使用 语法。ESCself的语法DefaultButton是:self.DefaultButton = forms.Button(Text = 'OK'); 通常通过使用对话框的DefaultButton方法来关闭对话框AbortButton。请注意,即使对话框已关闭,控件的值仍然可以被脚本的其余部分访问。
2.日历
日历控件用于选择日期或日期范围。语法: self.m_calender = forms.Calendar()
通常在日历控件上设置其他属性。日历控件有许多属性可以用来修改控件的工作方式。
该.Mode属性设置是否只能设置一个日期forms.CalendarMode.Single或通过设置选择日期范围.mode到forms.CalendarMode.Range。
开始MaxDate和.MinDate结束日期属性限制了可以选择的日期范围。
这.SelectedDate将导致该日期最初被选中。
3.复选框
复选框控件可用于指定True和False:,复选框的最简单语法是:
self.m_checkbox = forms.CheckBox(Text = 'My Checkbox')
该Text属性设置控件旁边文本的可见性。默认情况下,CheckBox未选中,并且带有值None。一旦选中,它包含布尔值True。一旦取消选中,值是False。
复选框的初始状态可以在类中设置。通过添加以下行,复选框将默认选中:
self.m_checkbox.Checked = True
4.颜色选择器
要从下拉菜单中选择一种颜色,请使用ColorPicker。此控件还支持下拉箭头上的右键单击菜单。右键单击菜单提供了颜色取样器和标准系统颜色选择器对话框的访问权限。
下面的简单代码将创建一个默认颜色为白色的颜色选择器:
self.m_colorpicker = forms.ColorPicker()
初始默认颜色可以通过在控制中添加代码来设置:
defaultcolor = Eto.Drawing.Color.FromArgb(255, 0,0)
self.m_colorpicker.Value = defaultcolor
5.组合框
组合框是一个下拉列表,允许直接输入文本,
self.m_combobox = forms.ComboBox()
self.m_combobox.DataStore = ['first pick', 'second pick', 'third pick']
默认值可以通过将索引位置添加到DataStore属性来设置:
self.m_combobox.SelectedIndex = 1
6.日期时间选择器
使用 DateTimePicker 选择日期和/或时间. 类似于 Calendar 控件,还有一个 DateTimePicker。可以在控件上设置 .Mode 以显示 .Date 或 .Time。 .Date 版本与 .Calendar 控件不同,通过下拉菜单访问日期:
该.Time模式创建一个可以选定时间的旋转器
self.m_datetimetime = forms.DateTimePicker()
self.m_datetimetime.Mode = forms.DateTimePickerMode.Time
self.m_datetimetime.Value = System.DateTime.Now
self.m_datetimetime.Value = System.DateTime(2017, 1, 1, 23, 43, 49, 500)
7.下拉菜单
下拉菜单包含项目列表。
self.m_dropdownlist = forms.DropDown()
self.m_dropdownlist.DataStore = ['first', 'second', 'third']
默认选择可以通过在DataStore中使用索引位置来设置:
self.m_dropdownlist.SelectedIndex = 1
8.网格视图
一个虚拟化的数据网格,具有可编辑的单元格。 GridView 用于模拟ListView控件, 创建一个.GridView()比其他ETo控件更复杂。首先创建.GridView,然后用forms.GridColumn()填充控件。每个.GridColumn都有一个.HeaderText,.Editable属性,并包含一个.DataCell。可以使用.DataCell显示TextBoxCell或CheckBoxCell。在创建每个.GridColumn后,将其添加到.GridView通过
self.m_gridview.Columns.Add(column1)方法。下面的示例在.GridView中填充了4列:
访问每个单元格的值forms.GridView可以通过使用该值在.DataStore属性中的索引位置来实现。
dialog.m_gridview.DataStore[1][2]
这将在上述示例中导致“第三选择”的值。
9.组框
GroupBox 显示一组控件,这些控件被边框包围,并且可以有可选的标题来标识该组, 就像较大的对话框,forms.GroupBox() 需要一个布局来帮助定位控件。在布局中,控件被放置。一旦控件被创建,控件就会被添加到布局中的行中,然后这些行会被添加到forms.GroupBox的内容中,用行.
10.图片框
用于显示单个位图图像的控件, 为 ImageView 创建一个空间很容易。下面的前 3 行创建了 forms.ImageView() 并设置其大小。填充用于在 forms.ImageView() 中显示的位图格式更为困难。在这个示例中,一个 RHino 视图捕获被转换成一个 drawing.Bitmap() 并设置为 .Image 属性以在 forms.ImageView() 中显示。
位图可以从多种不同的形式进行格式化。在这种情况下,view.CaptureToBitmap()图像通过
Rhino.UI.EtoExtensions.ToEto()方法被转换为Eto位图。
11. 最简单的 Eto 控件是 forms.Label()。它通常是用于为其他控件创建提示、标签、消息或描述的文本。
self.m_label = forms.Label(Text = 'Enter the Room Number:')
和许多控件一样,上面的行为控件创建一个名称m_label。然后,标签的主要属性是通过设置标签的 Text 属性来显示的文本。
通常情况下,标签的复杂程度不需要如此,但标签还有许多更多的属性。附加属性包括VerticalAlignment、Horizontal Alignment、TextAlignment、Wrap、TextColor和Font。属性可以通过在Label()中包含每个关键词,用逗号(,)分隔来添加:
self.m_label = forms.Label(Text = 'Enter the Room Number:', VerticalAlignment = VerticalAlignment.Center)
标签也可以直接在布局中创建。在向布局添加控件时,有一个简写语法会自动生成标签。forms.Label
在添加行或列时,可以插入一个简单的字符串。Eto会自动将字符串转换为一个标签。这是一种非常快速的方法来创建forms.Label。
12.链接按钮
LinkButton 是一个简单的标签,像按钮一样工作,类似于超链接, 像标准按钮一样forms.LinkButton()需要通过+=语法绑定到一个动作.
13.列表框
创建一个可滚动的项目列表以供选择,这个forms.ListBox()和.DataStore是创建一个forms.ListBox所必需的。该
self.m_listbox.SelectedIndex = 1是可选的,并在DataStore中设置默认选择的对象
self.m_listbox = forms.ListBox()
self.m_listbox.DataStore = ['first pick', 'second pick', 'third pick']
self.m_listbox.SelectedIndex = 1
14.数值输入框
使用鼠标通过旋转按钮调整数值的数值控制, 控制点击上或下箭头时旋转器的行为是forms.NumericUpDown()控制的关键.
self.m_numeric_updown = forms.NumericUpDown()
self.m_numeric_updown.DecimalPlaces = 2
self.m_numeric_updown.Increment = 0.01
self.m_numeric_updown.MaxValue = 10.0
self.m_numeric_updown.MinValue = 1.0
self.m_numeric_updown.Value = 5.0
15.密码框
使用forms.PasswordBox()以输入密码或敏感数据,文本将被遮罩, 该.MaxLength属性是可选的:
self.m_password = forms.PasswordBox()
self.m_password.MaxLength = 7
16.进度条
使用 forms.ProgressBar 来显示长时间任务的进度, 第一步是创建具有最小值和最大值的forms.ProgressBar:
self.m_progressbar = forms.ProgressBar()
self.m_progressbar.MinValue = 0
self.m_progressbar.MaxValue = 10
可以通过控件上的 .Value 属性来设置控件,如下例最后一行所示:
17.单选按钮列表
创建一系列单选按钮,允许从列表中选择一个选项, 创建 forms.RadioButtonList()控件很简单。 然后用一个 .DataStore填充列表:
self.m_radiobuttonlist = forms.RadioButtonList()
self.m_radiobuttonlist.DataStore = ['first pick', 'second pick', 'third pick']
self.m_radiobuttonlist.Orientation = forms.Orientation.Vertical
self.m_radiobuttonlist.SelectedIndex = 1
列表的.Orientation可以设置为
forms.Orientation.Vertical或
forms.Orientation.Horizontal。这是一个可选的属性。
设置.SelectedIndex列表中初始默认选择的对象。
18.富文本区域
多行文本区域,支持富文本格式, 这与TextBox不同,因为它是用于多行文本输入,并且可以接受Tab和输入。文本可以通过使用按键进行格式化。虽然这些按键在不同的平台上可能会有所不同,但此控件的修改按键列表可以在Microsoft MSDN 编辑命令文档找到。
self.m_richtextarea = forms.RichTextArea()
self.m_richtextarea.Size = drawing.Size(400, 400)
19.滑块
水平或垂直滑块,用于从范围内选择一个值, 滑块由控制、最大值和最小值组成。初始.Value 也可以在对话框创建时设置:
self.m_slider = forms.Slider()
self.m_slider.MaxValue = 10
self.m_slider.MinValue = 0
self.m_slider.Value = 3
要将滑块设置为垂直方向,请添加以下行:
self.m_slider.Orientation = forms.Orientation.Vertical
20.旋转器
用于在紧凑空间中显示不确定进度的旋转器,当创建forms.Spinner()时,将.Enabled设置为True将激活旋转动作.
self.m_spinner = forms.Spinner()
self.m_spinner.Enabled = True
21.文本区域
多行文本控件带滚动条, 一个简化的版本 forms.RichTextArea()。 forms.TextArea() 控制器只需要几行代码:
self.m_textarea = forms.TextArea()
self.m_textarea.Size = drawing.Size(400, 400)
22.文本框
TextBox 用于在对话框中输入字符串. 要检查脚本中文本框的内容,文本框控件必须有一个名称来引用它。
self.m_textbox = forms.TextBox()
在这种情况下,名称m_textbox可以在第44行开始的类方法中引用该控件:
def GetText(self):
return self.m_textbox.Text
只是创建一个新的Eto.Forms.TextBox()很常见。TextBox还有许多额外的属性可以用来控制输入。这些属性包括MaxLength、PlaceholderText、InsertMode以及许多可以在Eto TextBox 类中看到的。
23.树形网格视图
带有附加属性列的树视图
TreeGridView 将 Eto 中最复杂的两个控件 TreeView 和 GridView 结合在一起,形成一个控件。这使得控件非常强大,但也需要非常特定的语法才能正常工作。前两行是标准的,创建 forms.TreeGridView() 并设置其大小:
该forms.TreeView()控制需要一些非常特定的语法。一般的TreeView容器足够简单。设置对象然后设置其大小。如果要编辑树中的项目,则.LabelEdit属性可以设置为True.
self.m_treegridview = forms.TreeGridView()
self.m_treegridview.Size = drawing.Size(200, 200)
column1 = forms.GridColumn()
column1.HeaderText = 'Tree'
column1.Editable = True
column1.DataCell = forms.TextBoxCell(0)
self.m_treegridview.Columns.Add(column1)
column2 = forms.GridColumn()
column2.HeaderText = 'Prop 2'
column2.Editable = True
column2.DataCell = forms.TextBoxCell(1)
self.m_treegridview.Columns.Add(column2)
column3 = forms.GridColumn()
column3.HeaderText = 'Prop 3'
column3.Editable = True
column3.DataCell = forms.TextBoxCell(2)
self.m_treegridview.Columns.Add(column3)
treecollection = forms.TreeGridItemCollection()
item1 = forms.TreeGridItem(Values=('node1', 'node1b', 'node1c'))
item1.Expanded = True
item1.Children.Add(forms.TreeGridItem(Values=('node2', 'node2b', 'node2c')))
item1.Children.Add(forms.TreeGridItem(Values=('node3', 'node3b', 'node3c')))
treecollection.Add(item1)
item2 = forms.TreeGridItem(Values=('node11', 'node11b', 'node11c'))
treecollection.Add(item2)
self.m_treegridview.DataStore = treecollection
在设置控件中显示的列后forms.TreeGridView() 需要将这些列创建为form.GridColumn(). .DataCell 属性指向forms.TextBoxCell(index) 存在于.DataStore 在本脚本的最后一行分配的。
树的信息存储在一个forms.TreeGridCollection()中。树中的项目是一个forms.TreeGridItems,它包含.Values的元组。每个元组将填充forms.TreeGridView()中的一行。
该forms.TreeGridView不会自动更新其内容。在完成所有控制设置后,DataStore被设置为treecollection。这样做可能会导致一个不显示数据的控制。
- 上一篇:Rhino6.0 窗口开发使用角本说明
- 下一篇:WPF - 10.特殊容器控件
相关推荐
- Excel高效技巧:批量合并重复数据的实用指南
-
在日常数据处理中,我们常会遇到需要合并相邻重复单元格的场景。无论是整理分类标签、统计重复项还是优化报表格式,手动逐个合并不仅耗时且容易出错。本文将详细介绍三种专业高效的批量合并方法,助您轻松应对各种复...
- 自主研发高速动车组列车又添新成员(新时代画卷)
-
数据来源:国铁集团">数据来源:国铁集团CR400AF—S型列车驶过重庆。龙帆摄(人民视觉)">CR400AF—S型列车驶过重庆。龙帆摄(人民视觉)CR400BF—GZ型列车行驶在京...
- 福彩双色球幻圆图的VBA程序(第一部分)
-
很多朋友喜欢玩福彩双色球彩票,都知道下面的这张图——福彩双色球红球幻圆图和篮球幻方图。图2是福彩双色球2024104期(红色)和2024105期(黄色)的幻圆图。图3是福彩双色球2024105期(红色...
- 技巧 | 往MCP服务器添加提示词模板
-
在我的上一篇文章[1]中,我已经构建了一个本地MCP服务器并向其添加了一些工具。在本文中,我们将向该MCP服务器添加提示词。这是如同上一篇博客的文件结构。但在这里,我为此创建了两个新文件。.├──...
- Avalonia日志组件实现与优化指南
-
背景Avalonia目前没有富文本框可实现日志输出显示,但提供了SelectableTextBlock控件可以替换,这是站长实现的一个日志组件效果:可展示日志时间、日志级别、日志详细内容等,后台除输...
- vim编辑器最后几行@代表什么意思
-
使用vim编辑文本时,屏幕下方会出现一些@符号,这些符号代表什么意思?当vim设置了wrap属性时,若一行太长则就会发生折行现象,此时一个逻辑行就会显示多个屏幕行,如下图由于文件的第2行太长,一个真实...
- 浅色AI云食堂APP完整代码(二)
-
以下是整合后的浅色AI云食堂APP完整代码,包含后端核心功能、前端界面以及优化增强功能。项目采用Django框架开发,支持库存管理、订单处理、财务管理等核心功能,并包含库存预警、数据导出、权限管理等增...
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
-
本文主要介绍基本元素TextInput,TextField,TextEdit,TextArea等的基本属性。Textlnput与TextField为行编辑控件,TextEdit与T...
- WPF - 10.特殊容器控件
-
摘要这里我们要介绍的特殊容器空间是ScrollViewer,该控件与其他控件不同的是,可以支持滚动显示容器内的元素。下面我们举例说明如何在WPF中使用ScrollViewer控件。新建一个WPF程...
- rhino6.0 python中ETO的组件案例
-
1.按钮组件按钮几乎放置在每个对话框上。创建一个新的按钮很简单。使用forms.Button并指定Text显示在按钮面上。除了创建新按钮外,通常还通过.Click事件附加一个操作。使用+=语法,如下...
- Rhino6.0 窗口开发使用角本说明
-
第1个:生成窗口代码第2点:Eto界面主要由Dialog(主程序界面)、Layout(界面布局)和Controls(控件)三个部分构成,逻辑简单且清晰。这个脚本被分为三个主要部分。该import...
- 手把手教你搭建属于自己的服务器!
-
最近总是想搭建自己的网站,奈何皮夹里空空如也,服务器也租不起,更别说域名了。于是我就寻思能否自己搭建个服务器,还不要钱呢?还真行!!!经过几天的冲浪,我发现有两个免费的建站工具:Apache和Ng...
- HEAT杂志《欧美猛男》排行!“雷神”居然没进前三!
-
提到猛男的必备条件,应该就是要有着让人看了会流口水的大块肌肉,而一说到猛男,小编第一个想到的就是spanstyle="text-transform:none;background-color:...
- Power Query 表格列历遍函数Table.TransformColumns函数
-
PowerQuery提取数字应该是非常方便的,EH有这样一道题:一看到这题首先想的是PowerQuery,可能中毒有点深,思路挺简单的,PowerQuery有一个从数字到非数字的分列分列后再提取...
- 自学前端踩了30个坑,终于整理出这份新手避坑指南
-
这是我在自学前端的第37天,对着一个简单的HTML页面卡了整整一下午。不是逻辑错误,不是语法问题,只是我不知道为什么,一个div死活居中不了。那时候的我,以为前端就是写写页面、调调样式,直到后来才...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- CSS 水平对齐 (Horizontal Align) (30)
- opacity 属性 (32)