1+ '''
2+ 本節文章
3+ https://learnscript.net/zh-hant/obs-python-scripting/junior/data/clear-data-items-and-erase-data-item/ 如何清除所有資料項,抹除資料項
4+ '''
5+
6+ # 匯入模組 obspython
7+ import obspython as obs
8+
9+ # 用於儲存腳本設定
10+ data = None
11+
12+ def script_load (settings ):
13+ # 在腳本載入時,將腳本設定儲存在模組變數 data 中
14+ global data
15+ data = settings
16+
17+ def script_properties ():
18+ props = obs .obs_properties_create ()
19+
20+ # 添加用於填寫玩家和遊戲資訊的文字方塊
21+ obs .obs_properties_add_text (props , 'player' , '玩家:' , obs .OBS_TEXT_DEFAULT )
22+ obs .obs_properties_add_text (props , 'game' , '遊戲:' , obs .OBS_TEXT_DEFAULT )
23+ # 添加顯示祝賀資訊的文字方塊
24+ obs .obs_properties_add_text (props , 'done' , '祝賀,你已經完成所有步驟!' , obs .OBS_TEXT_INFO )
25+ # 添加下一步和重置按鈕
26+ obs .obs_properties_add_button (props , 'next' , '下一步' , next_clicked )
27+ obs .obs_properties_add_button (props , 'reset' , '重置' , reset_clicked )
28+
29+ # 刷新介面,用於顯示或隱藏文字方塊和按鈕
30+ refresh_ui (props )
31+
32+ return props
33+
34+ def next_clicked (props , prop ):
35+ # 當下一步按鈕被點選時,將腳本設定項 step 加 1,表示進入下一步
36+ step = obs .obs_data_get_int (data , 'step' )
37+ obs .obs_data_set_int (data , 'step' , step + 1 )
38+
39+ # 刷新介面,切換顯示下一步所用的控製項
40+ refresh_ui (props )
41+ return True
42+
43+ def reset_clicked (props , prop ):
44+ # 清空所有的腳本設定項
45+ obs .obs_data_clear (data )
46+ # 需要將腳本設定應用到屬性,否則文字方塊中的已有內容不會被清空
47+ obs .obs_properties_apply_settings (props , data )
48+
49+ # 刷新介面,恢復到第一步
50+ refresh_ui (props )
51+ return True
52+
53+ def refresh_ui (props ):
54+ # 腳本設定項 step 表示當前是第幾步
55+ step = obs .obs_data_get_int (data , 'step' )
56+
57+ # 根據 step 來決定哪些文字方塊和按鈕需要顯示
58+ prop = obs .obs_properties_get (props , 'player' )
59+ obs .obs_property_set_visible (prop , step == 0 )
60+
61+ prop = obs .obs_properties_get (props , 'game' )
62+ obs .obs_property_set_visible (prop , step == 1 )
63+
64+ prop = obs .obs_properties_get (props , 'done' )
65+ obs .obs_property_set_visible (prop , step == 2 )
66+
67+ prop = obs .obs_properties_get (props , 'next' )
68+ obs .obs_property_set_visible (prop , step != 2 )
69+
70+ prop = obs .obs_properties_get (props , 'reset' )
71+ obs .obs_property_set_visible (prop , step == 2 )
0 commit comments