用Python3.8以上封装一个在rhino7中使用的函数,有3个参数: 参数1:复选框和是否选中的二维数组,参数2:窗口标题,参数3:提示信息 窗口布局如下: 所有控件高度为20 控件左边距20,行间距10 第一行为提示信息,顶边距20

动态 未结 0 87
小小草
小小草 LV1 2023年9月23日 23:40 发表
# -*- coding: utf-8 -*- import rhinoscriptsyntax as rs import Rhino.UI import System.Drawing as Drawing import System.Windows.Forms as Forms def create_checkbox_window(checkbox_list, title, message): # 计算窗口高度 height = 60 + len(checkbox_list) // 2 * 30 # 创建窗口 form = Forms.Form() form.Text = title form.FormBorderStyle = Forms.FormBorderStyle.FixedDialog form.MaximizeBox = False form.StartPosition = Forms.FormStartPosition.CenterParent form.ClientSize = Drawing.Size(300, height) form.KeyPreview = True form.KeyDown += lambda sender, e: e.KeyCode == Forms.Keys.Escape and form.Close() # 添加提示信息 label_message = Forms.Label() label_message.Text = message label_message.AutoSize = True label_message.Location = Drawing.Point(20, 20) form.Controls.Add(label_message) # 添加复选框 for i, checkbox in enumerate(checkbox_list): row = i // 2 col = i % 2 check_box = Forms.CheckBox() check_box.Text = checkbox[0] check_box.Checked = checkbox[1] check_box.AutoSize = True check_box.Location = Drawing.Point(20 + col * 150, 50 + row * 30) form.Controls.Add(check_box) # 添加确定和取消按钮 button_ok = Forms.Button() button_ok.Text = "确定" button_ok.DialogResult = Forms.DialogResult.OK button_ok.Location = Drawing.Point(100, height - 70) form.AcceptButton = button_ok form.Controls.Add(button_ok) button_cancel = Forms.Button() button_cancel.Text = "取消" button_cancel.DialogResult = Forms.DialogResult.Cancel button_cancel.Location = Drawing.Point(200, height - 70) form.CancelButton = button_cancel form.Controls.Add(button_cancel) # 显示窗口 result = form.ShowDialog(Rhino.UI.RhinoEtoApp.MainWindow) # 返回结果 if result == Forms.DialogResult.OK: return [[checkbox.Text, checkbox.Checked] for checkbox in form.Controls if isinstance(checkbox, Forms.CheckBox)] else: return None
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复