XmlSettingBase
XmlSettingBaseはアプリケーション設定をXMLファイルに関連づけるために用意されたモジュールです。
特徴
- XMLファイルのパスを指定するだけで読み込み可能
- 取り出したい要素名をリストで列挙するだけでユーザーのコードに設定値を取り込み可能
- XML属性値を利用して編集画面を自動生成
- 編集画面で変更した設定値をプロセスに即反映可能
使い方
ikkToolKitのXmlSettingBaseをインポートXmlSettingBaseを継承して任意のクラスを作成
pip install ikkToolKit
サンプルコード
from ikkToolKit import XmlSettingBase
#####################################################################
# サンプル
#####################################################################
if __name__ == "__main__":
#XmlSettingBaseを継承して任意名のクラスにする
class AppSetting(XmlSettingBase):
""" 公開プロパティ名とXMLタグの関連付け """
_PROPERTIES = {
#公開プロパティ名 : (XMLのキー , 型 , デフォルト値) のタプルを定義してください
"tergetDir" : ("path1" , str , "" ),
"tergetFile" : ("file1" , str , "" ),
"defaultCount" : ("valint1" , int , 0 ),
"defaultPosition" : ("valfloat1" , float , 0.0 ),
"LabelX" : ("valstr1" , str , "" ),
"LabelY" : ("valstr2" , str , "" ),
}
def __init__(self):
super().__init__("setting.xml") #対象とするXMLファイルのパスをSuperClassに渡す
self.load()
#----------------------------------------------------
import sys
setting = AppSetting()
def show_settings():
print(setting.tergetDir) #_PROPERTIESで定義したプロパティ名でアクセス可能
print(setting.tergetFile)
print(setting.defaultCount)
print(setting.defaultPosition)
print(setting.LabelX)
print(setting.LabelY)
print("------------------------------------------")
show_settings() # 読み込み直後をPrint
setting.show_editor(None) #編集GUI表示
show_settings() # 編集後の状態表示
XMLファイルの制約
- ルート要素の下(第一階層)のみを利用
- 要素名の
typeにより編集画面の表示を割り当てています- directory :フォルダ選択ダイアログ
- file :ファイル選択ダイアログ
- int :整数
- float :少数
- 要素名の
tipsは、編集ウインドウのラベルになります- ルート要素の
tipsはウインドウタイトル
- ルート要素の
Sample XMLファイル
<?xml version='1.0' encoding='utf-8'?>
<AppFileSetting tips="編集ウインドウタイトル" version="1.0">
<path1 type="directory" tips="フォルダ">C:\work\</path1>
<file1 type="file" tips="ファイル">C:\work\table.csv</file1>
<valint1 type="int" tips="int設定値">134</valint1>
<valfloat1 type="float" tips="float設定値">3.14159</valfloat1>
<valstr1 type="string" tips="文字列1">ABCDEFG</valstr1>
<valstr2 type="string" tips="文字列2">あいうえお</valstr2>
</AppFileSetting>
GUIによる編集画面
type,tips属性に連動した編集画面の生成
