ການສ້າງສະຄຣິບ Python ດ້ວຍ ScriptForge
ຄວາມແຕກຕ່າງລະຫວ່າງ Basic ແລະ Python
ຫ້ອງສະໝຸດ ScriptForge ສາມາດໃຊ້ໄດ້ທັງໃນ Basic ແລະ Python. ບໍລິການ, ເມັດທອດ ແລະ ຄຸນສົມບັດສ່ວນໃຫຍ່ຈະເຮັດວຽກຄືກັນໃນທັງສອງພາສາການຂຽນໂປຣແກຣມ. ເຖິງຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກຄວາມແຕກຕ່າງໃນວິທີການເຮັດວຽກຂອງແຕ່ລະພາສາ, ຜູ້ໃຊ້ ScriptForge ຕ້ອງຮັບຮູ້ເຖິງລັກສະນະສະເພາະບາງຢ່າງຂອງຫ້ອງສະໝຸດເມື່ອໃຊ້ Python:
-
ຊື່ເມັດທອດ ແລະ ຄຸນສົມບັດ: ໃນ Python, ທຸກໆເມັດທອດ ແລະ ຄຸນສົມບັດສາມາດໃຊ້ໄດ້ທັງໃນຮູບແບບຕົວອັກສອນນ້ອຍທັງໝົດ (lowercased), ຕົວໃຫຍ່ສະເພາະໂຕທຳອິດ (ProperCased) ຫຼື ຮູບແບບອູດ (camelCased).
-
Arguments: All keyword arguments passed on to methods are lowercased.
-
ວັນທີ: ທຸກໆວັດຖຸວັນທີຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນວັດຖຸ datetime.datetime ຂອງ Python ໂດຍກົງ.
-
ອາເຣ (Arrays): ອາເຣມິຕິດຽວຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນ tuples (ເຊິ່ງເປັນວັດຖຸທີ່ບໍ່ສາມາດປ່ຽນແປງຄ່າໄດ້). ອາເຣສອງມິຕິຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນ tuples ຂອງ tuples.
-
None: ຄີເວີດ None ຂອງ Python ແມ່ນທຽບເທົ່າກັບ Null, Empty ຫຼື Nothing ຂອງ Basic.
-
ວັດຖຸ UNO: ໂຄງສ້າງ UNO ທັງໝົດຈະຖືກແລກປ່ຽນລະຫວ່າງ Basic ແລະ Python ໂດຍບໍ່ມີການປ່ຽນແປງໃດໆ.
-
ການດີບັກ (Debugging): ທຸກຄັ້ງທີ່ເກີດຂໍ້ຜິດພາດໃນສະຄຣິບ Python ທີ່ໃຊ້ ScriptForge, ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດທີ່ໃຫ້ໂດຍ Python execution stack ຈະສະແດງແຖວຂອງໂຄດທີ່ເປັນຕົວກະຕຸ້ນໃຫ້ເກີດຂໍ້ຜິດພາດ. ໃນຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຂອງ Basic ຈະບໍ່ສະແດງຂໍ້ມູນນີ້.
ການແກ້ໄຂສະຄຣິບ Python ໃນ IDEs
ຄຳແນະນຳການພິມ (typing hints) ຂອງ Python - ເຊິ່ງກ່ຽວຂ້ອງກັບເມັດທອດສາທາລະນະ ແລະ ຄຸນສົມບັດຂອງບໍລິການ ScriptForge - ສາມາດເອົາໄດ້ຈາກ IDEs ທີ່ຮອງຮັບສິ່ງອຳນວຍຄວາມສະດວກດັ່ງກ່າວ. ໃນທາງກາຍະພາບ, ຂະນະທີ່ພວມແກ້ໄຂສະຄຣິບຂອງຜູ້ໃຊ້:
-
ການວາງເມົາສ໌ໄວ້ເທິງອິນສະແຕນຊ໌ວັດຖຸ, ເມັດທອດ ຫຼື ຄຸນສົມບັດ ຈະສະແດງຄຳອະທິບາຍລະອຽດຂອງມັນ.
-
ການພິມ "." ຫຼັງຈາກອິນສະແຕນຊ໌ວັດຖຸ ຈະສະແດງກ່ອງລາຍການແບບເລື່ອນລົງທີ່ລະບຸອິນເຕີເຟສທັງໝົດທີ່ມີຢູ່.
-
ວົງເລັບຫຼັງຈາກຊື່ເມັດທອດ ຈະເລີ່ມການຕື່ມຂໍ້ມູນໂຄດໃຫ້ສົມບູນ (code-completion) ໂດຍການສະແດງອາກິວເມັນຂອງມັນ.
ຄຳແນະນຳການພິມຈະຖືກສະແດງເມື່ອມີການແກ້ໄຂເມັດທອດ ແລະ ຄຸນສົມບັດດ້ວຍຕົວອັກສອນແບບ propercase.
ການລັນສະຄຣິບ Python ໃນ LibreOfficeDev
ອີງຕາມສິ່ງທີ່ທ່ານຕ້ອງການບັນລຸ, ທ່ານສາມາດເລືອກໜຶ່ງໃນວິທີການລັນສະຄຣິບ Python ໃນ LibreOfficeDev ດັ່ງຕໍ່ໄປນີ້:
-
ລັນສະຄຣິບພາຍໃນໂປຣເຊສ LibreOfficeDev ປັດຈຸບັນ: ສະຄຣິບ Python ຈະຖືກປະຕິບັດຈາກພາຍໃນໂປຣເຊສ LibreOfficeDev ໂດຍການໃຊ້ເມນູ ຫຼື ສ່ວນຂະຫຍາຍ APSO ເພື່ອເອີ້ນໃຊ້ສະຄຣິບຂອງຜູ້ໃຊ້ທີ່ເກັບໄວ້ໃນໂຟນເດີສະຄຣິບ Python. ທ່ານຍັງສາມາດໃຊ້ APSO Python shell ເພື່ອລັນສະຄຣິບ Python ແບບໂຕ້ຕອບໄດ້.
-
ລັນສະຄຣິບແຍກຈາກໂປຣເຊສ LibreOfficeDev: ສະຄຣິບ Python ຈະຖືກປະຕິບັດຈາກໂປຣເຊສພາຍນອກທີ່ເຊື່ອມຕໍ່ກັບໂປຣເຊສ LibreOfficeDev ທີ່ກຳລັງເຮັດວຽກຢູ່ໂດຍການໃຊ້ pipe ຫຼື socket.
ການລັນສະຄຣິບຈາກພາຍໃນໂປຣເຊສ LibreOfficeDev
ການໃຊ້ສ່ວນຂະຫຍາຍ APSO
ວິທີທີ່ງ່າຍທີ່ສຸດໃນການເລີ່ມຕົ້ນຂຽນສະຄຣິບ Python ໃນ LibreOfficeDev ແມ່ນການຕິດຕັ້ງສ່ວນຂະຫຍາຍ APSO. ຫຼັງຈາກຕິດຕັ້ງແລ້ວ, ໃຫ້ເປີດສ່ວນປະກອບໃດໜຶ່ງຂອງ LibreOfficeDev ແລະໄປທີ່ .
ໃນໜ້າຕ່າງຫຼັກຂອງ APSO ໃຫ້ໄປທີ່ .
ຫຼືທ່ານສາມາດເປີດ APSO ໂດຍໃຊ້ປຸ່ມລັດເລີ່ມຕົ້ນ Alt + Shift + F11.
ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງ Python ແລະ shell ຈະສະແດງຜົນໄດ້ຮັບທີ່ກ່ຽວຂ້ອງຫຼັງຈາກແຕ່ລະແຖວຂອງລະຫັດຖືກປະຕິບັດ.
ເພື່ອເລີ່ມຕົ້ນການນຳໃຊ້ໄລບຣາຣີ ScriptForge, ທ່ານຈຳເປັນຕ້ອງນຳເຂົ້າ (import) ວິທີການ CreateScriptService, ເຊິ່ງທ່ານຈະສາມາດເຂົ້າເຖິງການບໍລິການຕ່າງໆທີ່ສະໜອງໃຫ້ໂດຍໄລບຣາຣີ. ຕົວຢ່າງຂ້າງລຸ່ມນີ້ແມ່ນການໃຊ້ບໍລິການ Basic ເພື່ອສະແດງກ່ອງຂໍ້ຄວາມ.
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
ເພື່ອລັນຕົວຢ່າງຂ້າງເທິງ, ໃຫ້ປ້ອນແຕ່ລະແຖວໃນ Python shell, ເທື່ອລະແຖວ, ແລ້ວກົດປຸ່ມ Enter ຫຼັງຈາກທີ່ທ່ານພິມລະຫັດແຕ່ລະແຖວ.
ຕອນນີ້ທ່ານສາມາດເລີ່ມປະຕິບັດຄຳສັ່ງ Python ໂດຍໃຊ້ບໍລິການໃດໜຶ່ງຂອງ ScriptForge. ຕົວຢ່າງ, ຕົວຢ່າງລະຫັດຂ້າງລຸ່ມນີ້ໃຊ້ບໍລິການ UI ເພື່ອສ້າງເອກະສານ Writer ຫວ່າງເປົ່າ.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
ການສ້າງໄຟລ໌ສະຄຣິບ Python
ທ່ານສາມາດສ້າງໄຟລ໌ Python ຂອງທ່ານເອງ ແລະ ແກ້ໄຂພວກມັນດ້ວຍໂປຣແກຣມແກ້ໄຂຂໍ້ຄວາມ (text editor) ທີ່ທ່ານຕ້ອງການ. ຈາກນັ້ນທ່ານສາມາດເອີ້ນໃຊ້ພວກມັນໄດ້ຈາກພາຍໃນສ່ວນປະກອບໃດໜຶ່ງຂອງ LibreOfficeDev.
ຂັ້ນຕອນທຳອິດແມ່ນການຊອກຫາບ່ອນເກັບສະຄຣິບຂອງຜູ້ໃຊ້. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ເບິ່ງທີ່ໜ້າຊ່ວຍເຫຼືອ ການຈັດລະບຽບ ແລະ ສະຖານທີ່ຂອງສະຄຣິບ Python.
ຕອນນີ້ທ່ານສາມາດສ້າງໄຟລ໌ຂໍ້ຄວາມພາຍໃນໂຟນເດີສະຄຣິບ Python ຂອງຜູ້ໃຊ້, ຕົວຢ່າງ my_script.py, ແລະ ເລີ່ມພິມສະຄຣິບຂອງທ່ານ.
ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງງ່າຍໆໃນການດຶງຄ່າຕົວເລກຈາກຫ້ອງ (cell) ຂອງ Calc ແລະ ເພີ່ມຄ່າມັນຂຶ້ນ 1. ພຽງແຕ່ພິມລະຫັດຕໍ່ໄປນີ້ລົງໃນໄຟລ໌ my_script.py.
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("A1")
value += 1
doc.SetValue("A1", value)
g_exportedScripts = (increment_cell, )
ຕົວຢ່າງນີ້ສ້າງຟັງຊັນ increment_cell. ໝາຍເຫດວ່າ g_exportedScripts ແມ່ນ tuple ທີ່ຈະບອກວ່າຟັງຊັນໃດຈະຖືກສະແດງໃນ LibreOfficeDev ເປັນສະຄຣິບຂອງຜູ້ໃຊ້.
ເພື່ອກລັນສະຄຣິບນີ້ຈາກພາຍໃນເອກະສານ Calc:
-
ສ້າງ ຫຼື ເປີດໄຟລ໌ Calc.
-
ປ້ອນຄ່າຕົວເລກບາງຢ່າງລົງໃນຫ້ອງ "A1" ໃນຊີດປັດຈຸບັນ.
-
ໄປທີ່ .
-
ເລືອກ ມາໂຄຣຂອງຂ້ອຍ - my_script ໃນບ່ອນເລືອກໄລບຣາຣີ. ຈາກນັ້ນເລືອກຟັງຊັນ increment_cell ພາຍໃຕ້ລາຍຊື່ .
-
ຄລິກ ລັນ. ສັງເກດວ່າຄ່າໃນຫ້ອງ "A1" ໄດ້ຖືກເພີ່ມຂຶ້ນ 1.
ທ່ານຍັງສາມາດໃຊ້ APSO ເພື່ອລັນສະຄຣິບ Python ໃນລັກສະນະດຽວກັນ:
-
ທຳອິດໃຫ້ເປີດ APSO ໂດຍໄປທີ່ .
-
ໃນລາຍຊື່ມາໂຄຣ, ໄປທີ່ .
-
ຄລິກ .
ການລັນສະຄຣິບແຍກຈາກໂປຣເຊສ LibreOfficeDev
ການກຳນົດເສັ້ນທາງການຕິດຕັ້ງ (Installation Path)
ຂັ້ນຕອນທຳອິດໃນການລັນສະຄຣິບຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກແມ່ນການຊອກຫາໂຟນເດີທີ່ LibreOfficeDev ຖືກຕິດຕັ້ງ. ມີຫຼາຍວິທີທີ່ຈະເຮັດແນວນັ້ນ, ແຕ່ ScriptForge ໃຫ້ວິທີທີ່ໄວໃນການລະບຸເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ເປີດ Python shell ຂອງ APSO ແລະ ພິມ:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
ຜົນໄດ້ຮັບຈາກລະຫັດຂ້າງເທິງແມ່ນໄດເຣັກທໍຣີພື້ນຖານທີ່ LibreOfficeDev ຖືກຕິດຕັ້ງ. ຕອນນີ້ທ່ານຈຳເປັນຕ້ອງເພີ່ມໂຟນເດີຍ່ອຍ "program" ເຂົ້າໃນເສັ້ນທາງທີ່ໄດ້ຮັບ. ນີ້ແມ່ນໂຟນເດີພື້ນຖານທີ່ທ່ານຈະໃຊ້ລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ.
ຕົວຢ່າງ, ສົມມຸດວ່າທ່ານໄດ້ຮັບ /usr/lib/libreoffice/ ເປັນຜົນໄດ້ຮັບຈາກການລັນລະຫັດ Python ຂ້າງເທິງ. ຈາກນັ້ນທ່ານຕ້ອງຖືວ່າ /usr/lib/libreoffice/program ເປັນເສັ້ນທາງໃນການລັນສະຄຣິບ Python ຂອງທ່ານ.
ເລີ່ມ LibreOfficeDev ດ້ວຍການຕັ້ງຄ່າ pipe ຫຼື socket
ເພື່ອລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ, ທ່ານຈຳເປັນຕ້ອງເລີ່ມ LibreOfficeDev ດ້ວຍຕົວເລືອກເພີ່ມເຕີມບາງຢ່າງທີ່ລະບຸຊື່ pipe ຫຼື ຊື່ໂຮສ (hostname) ແລະ ພອດ (port) ທີ່ໂປຣເຊສພາຍນອກຈະໃຊ້ສື່ສານກັບໂປຣເຊສສ່ວນປະກອບຂອງ LibreOfficeDev.
ເປີດໜ້າຕ່າງຄຳສັ່ງ (command prompt) ຂອງລະບົບປະຕິບັດການຂອງທ່ານ, ໄປທີ່ໂຟນເດີ program ຂອງໄດເຣັກທໍຣີການຕິດຕັ້ງ LibreOfficeDev ຂອງທ່ານ ແລະ ພິມຢ່າງໃດຢ່າງໜຶ່ງຕໍ່ໄປນີ້:
ໃນ Linux / Mac OS:
libreoffice --accept='pipe,name=aPipeName;urp;'
ໃນ Windows:
soffice.exe --accept='socket,host=localhost,port=2021;urp;'
ໃນຮູບແບບ flatpak:
flatpak run org.libreOffice.LibreOffice accept='socket,host=localhost,port=2021;urp;'
ຄຳສັ່ງໃດໜຶ່ງຂ້າງເທິງຈະເລີ່ມ LibreOfficeDev ພ້ອມກັບເປີດຊ່ອງທາງການສື່ສານເພື່ອໃຫ້ໂປຣເຊສອື່ນໆສາມາດແລກປ່ຽນຂໍ້ຄວາມກັບມັນໄດ້.
ໝາຍເຫດວ່າຕົວຢ່າງກ່ອນໜ້ານີ້ຈະເປີດໜ້າຫຼັກ (start center) ຂອງ LibreOfficeDev. ຖ້າທ່ານຕ້ອງການເປີດສ່ວນປະກອບສະເພາະ, ຕົວຢ່າງ Writer, ທ່ານສາມາດເພີ່ມແຟລັກ (flag) --writer ເຂົ້າໃນຄຳສັ່ງ ດັ່ງຕໍ່ໄປນີ້.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
ໃຫ້ຈົດຈຳພາຣາມິເຕີ name, ຫຼື host ແລະ port, ເຊິ່ງໃນຕົວຢ່າງນີ້ແມ່ນ aPipeName, ຫຼື localhost ແລະ 2021 ຕາມລຳດັບ.
ການລັນ Python Shell ພາຍນອກ
ເລີ່ມ Python shell ຈາກພາຍໃນໂຟນເດີ program ຢູ່ໃນເສັ້ນທາງການຕິດຕັ້ງ LibreOfficeDev ຂອງທ່ານ. ປະຕິບັດຕາມຂັ້ນຕອນ ຂ້າງເທິງ ເພື່ອຮຽນຮູ່ວິທີຊອກຫາເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ.
ໃນ Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
ໃນ Windows:
$ cd C:\\Program Files\\LibreOffice\\program\
$ python.exe
ສິ່ງນີ້ຈະເປີດ Python shell ແລະ ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງທີ່ຈະຖືກປະຕິບັດໂດຍ LibreOfficeDev. ແຕ່ກ່ອນອື່ນ ທ່ານຈຳເປັນຕ້ອງຕັ້ງຄ່າການເຊື່ອມຕໍ່ pipe ຫຼື socket. ຄຳສັ່ງ ScriptForge() ຂ້າງລຸ່ມນີ້ຕ້ອງມາກ່ອນການເອີ້ນໃຊ້ CreateScriptService() ຄັ້ງທຳອິດ.
ລັນຢ່າງໃດຢ່າງໜຶ່ງ:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='aPipeName')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
ອ່ານພາກສ່ວນ ການຕັ້ງຄ່າ PYTHONPATH ຂ້າງລຸ່ມນີ້ ໃນກໍລະນີທີ່ເກີດຂໍ້ຜິດພາດໃນການນຳເຂົ້າ scriptforge.py ຫຼື uno.py.
ແຖວທີສອງຂອງລະຫັດຂ້າງເທິງຈະກຳນົດການຕັ້ງຄ່າ pipe ຫຼື host ແລະ port ເພື່ອໃຫ້ Python shell ສາມາດສື່ສານກັບໂປຣເຊສ LibreOfficeDev ທີ່ກຳລັງເຮັດວຽກຢູ່ ເຊິ່ງຖືກເປີດດ້ວຍການຕັ້ງຄ່າ pipe ຫຼື socket ດຽວກັນ.
ຕອນນີ້ທ່ານສາມາດລັນຄຳສັ່ງ Python ອື່ນໆ ແລະ ພວກມັນຈະສາມາດສື່ສານກັບໂປຣເຊສ LibreOfficeDev ໄດ້. ຕົວຢ່າງ:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
ການຕັ້ງຄ່າ PYTHONPATH
ອີງຕາມການຕັ້ງຄ່າຂອງລະບົບປະຕິບັດການຂອງທ່ານ, ທ່ານອາດຈະຈຳເປັນຕ້ອງຕັ້ງຄ່າຕົວປ່ຽນສະພາບແວດລ້ອມ (environment variable) PYTHONPATH ເພື່ອນຳເຂົ້າໄລບຣາຣີ scriptforge.py, ເຊິ່ງຈຳເປັນຕ້ອງມີການນຳເຂົ້າໄລບຣາຣີ uno.py ນຳອີກ.
ໃຊ້ເຄື່ອງມືຄົ້ນຫາໄຟລ໌ຂອງລະບົບປະຕິບັດການຂອງທ່ານເພື່ອລະບຸໄດເຣັກທໍຣີທີ່ໄຟລ໌ທັງສອງນີ້ຕັ້ງຢູ່.
ຕົວຢ່າງ, ໃນການຕິດຕັ້ງ Ubuntu ແບບເລີ່ມຕົ້ນ, ໄຟລ໌ທັງສອງອາດຈະຕັ້ງຢູ່ທີ່:
ໃນກໍລະນີນີ້, ໃຫ້ຕັ້ງຄ່າຕົວປ່ຽນສະພາບແວດລ້ອມ PYTHONPATH ດັ່ງຕໍ່ໄປນີ້ ກ່ອນທີ່ຈະເລີ່ມຕົວແປພາສາ (interpreter) ຂອງ Python:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
ສະຖານທີ່ຂອງໄຟລ໌ເຫຼົ່ານີ້ຈະແຕກຕ່າງກັນໄປຕາມແຕ່ລະລະບົບປະຕິບັດການ ແລະ ວິທີການຕິດຕັ້ງ LibreOfficeDev.