5獲取按鈕返回值訊息 SketchUp之UI訊息框

2021-10-25 12:22:07 字數 3594 閱讀 9843

ui對話方塊

在這一章節中,我們來熟悉一下常用的對話方塊

在程式中常用的有:

0 1、使用者訊息輸入框

inputbox — 建立乙個用於輸入使用者資訊的對話方塊。

該對話方塊包含帶有靜態文字提示,

可選預設值,可選下拉選項和可選標題的輸入字段。

還可以使用此方法通過傳遞可選引數來顯示選項的下拉列表。

呼叫方法:

inputbox(prompts, defaults, title) ⇒ array, false

inputbox(prompts, defaults, list, title) ⇒ array, false

引數:prompts (array) — 提示輸入資訊的名稱陣列

defaults (array) — 輸入框預設值陣列

list (string, array) — 包含用|分割下拉選項值字串的陣列

title (string) — 資訊輸入框的標題

返回值:如果使用者未取消對話方塊,則返回值的陣列。如果使用者取消了對話方塊,則返回false。陣列中返回的值將與輸入欄位的順序相同

示例:

prompts = ["name", "age", "gender"]

defaults = ["enter name", "", "male"]

list = ["", "", "male|female"]

title = "老頑童"

input = ui.inputbox(prompts, defaults, list, title)

上面這段示例效果如圖:

0 2、訊息提示框

messagebox — 建立乙個包含靜態文字的訊息框

呼叫方法:

messagebox(message, type = mb_ok) ⇒ integer
引數:messagebox — 你要顯示的訊息

type — 訊息框型別,常量型別

有效的訊息框型別有:

mb_ok—包含「確定」按鈕。

mb_okcancel — 包含「確定」和「取消」按鈕。

mb_abortretryignore — 包含「中止」,「重試」和「忽略」按鈕。

mb_yesnocancel — 包含「是」,「否」和「取消」按鈕。

mb_yesno — 包含是和否按鈕。

mb_retrycancel — 包含「重試」和「取消」按鈕。

mb_multiline — 包含和「確定」按鈕

返回值可以是以下任意值:

idok

idcancel

idabort

idretry

idignore

idyes

idno

示例:

result = ui.messagebox('是否感興趣?', mb_yesno)

if result == idyes

ui.messagebox('關注我')

end

效果:

在這裡還有很多的type型別,感興趣的小夥伴可以自己試試。

0 3、ui對話方塊實戰

我們想實現乙個引數控制的正方體外掛程式

示例

我們去之前的工具條中加上cube工具

cube_cmd = ui::command.new("cube_tool")

menu.add_item cube_cmd

cube_cmd.large_icon = cube_cmd.small_icon = "lwt_plug/image/cube.png"

cube_cmd.tooltip = "矩形工具"

cube_cmd.status_bar_text = "這是矩形工具"

*******.add_item cube_cmd

記得一定要把cube.rb路徑放入files陣列中載入改檔案

看一下cube.rb檔案:

class cube

def self.create_cube

model = sketchup.active_model

model.start_operation('create cube', true)

# 建立資訊輸入框

prompts = ["長度", "寬度", "高度", "材質"]

defaults = ["1000", "1000", "1000", "red"]

list = ["", "", "", "red|yellow|purple"]

input = ui.inputbox(prompts, defaults, list, "建立矩形")

# if input

vue = [input[0].to_f.mm,input[1].to_f.mm,input[2].to_f.mm]

v = vue.find

# 判斷輸入值是否有效,messbox提示

res = ui.messagebox("在輸入的長、寬、高中存在不合法數值", mb_ok) if v

return if res

group = model.active_entities.add_group

entities = group.entities

points = [

geom::point3d.new(0, 0, 0),

geom::point3d.new(input[0].to_f.mm, 0, 0),

geom::point3d.new(input[0].to_f.mm, input[1].to_f.mm, 0),

geom::point3d.new(0, input[1].to_f.mm, 0)

]face = entities.add_face(points)

face.reverse! unless face.normal.samedirection? z_axis

face.pushpull(input[2].to_f.mm)

group.material = input[-1]

endmodel.commit_operation

endend

我們先建立乙個資訊輸入框,可以輸入長寬高及材質

判斷輸入的長寬高是否有效

若果存在無效值

彈出訊息框

效果如圖:

這樣我們在工具中就運用了這兩個命令

是不是覺得還挺簡單的

感興趣的小夥伴動手試試吧

感興趣小夥伴關注我吧

expect獲取返回值

對於獲取多台server狀態且不用互動須要用到expect,但有時候expect無法獲取返回值。這裡解釋一下expect怎樣獲取返回值 expect c spawn 1 expect assword eof expect eof catch wait result exit lindex resul...

C 獲取IPCONFIG 返回值

在我們獲取本機區域網ip以及其他相關資訊時,直接呼叫系統ipconfig,也是一種很有效的方法。以下是我用c 實現的 讀取ipconfig的返回值的 獲取ipconfig返回值 返回 ipconfig輸出 public static string getipconfigreturns return ...

Python 獲取多執行緒獲取返回值

1.通過重寫thread類,自定義乙個get result 方法 重新定義帶返回值的執行緒類 from threading import thread from time import sleep,time class mythread thread def init self,func,args ...