メインコンテンツまでスキップ

デスクトップアプリの開発

デスクトップアプリは現在pythonを使用したものが公開されています。
pythonで記述されたスクリプトとアプリが設定を読み込むためのjsonファイルを作成することでアプリに独自のプラグインを導入できます。

pythonバージョン 3.10.8
GUIフレームワーク customtkinter

アプリが要求するプラグインの情報のjsonファイル

{
"plugin_name": "hogePlguin",
"plugin_file": "hogePlguin.py",
"explain": "これはLapisCastデスクトップアプリ用のプラグインです。",
"repository_url": "",
"update_check_url": ""
}

現在「repository_url」及び、「update_check_url」は機能しません。

また、プラグインから利用できる関数をまとめたヘルパーもあります。


from typing import Callable

# customtkinterのmaster要素です
guiMaster = None

def PrintLog(*logtexts:str|list|None):
pass

def PrintLog_warn(*logtexts:str|list|None):
pass

def PrintLog_error(*logtexts:str|list|None):
pass

def SaveValue(key:str="", value:str|list|dict|None=None):
pass

def ReadValue(key:str=""):
pass

def ReadValueWithDefault(key:str="", default:str|list|dict|None=None) -> str|list|dict|None:
pass

class HttpResult():
def __init__(self):
self.method:str = "GET"
self.status_code:int = 0
self.text:str = ""
self.json:Callable[[], dict]

def HTTPAccess(method:str="GET", url:str=None, params:dict=None, headers:dict=None, cookies:dict=None, data:dict=None, json:dict=None) -> HttpResult:
return HttpResult()

def SendLapisCast(eventkey:str=None, value:str|int|float=None, redundantmode:int=0):
pass

# CheckExit
# アプリケーションの終了フラグを返します
# 通常(実行中)は True を返します
def CheckExit() -> bool:
return True

それぞれのファイルの配置場所はデスクトップアプリのexeファイルと同じフォルダにつくられる「LapisAppData」フォルダ内のpluginフォルダの中になります。
ここにプラグイン名のフォルダを作成し、その中にjsonファイルやpythonファイルを配置してください。

customtkinterのバグ

現在customtkinterにはGUIオブジェクトをdelしてもメモリが解放されないバグが確認されています。
デスクトップアプリは長時間動作させるアプリケーションなのでメモリリークには十分ご注意ください。

今後のアップデート

これら提供される新しいバージョンのデスクトップアプリはpythonではなく、typescript react系のものになると思われます。
しかしながら、開発のめどは立っていないのでしばらくはpythonクライアントを利用することになると思います。