APIリファレンス¶
PubSubTkライブラリの詳細なAPI仕様や活用パターンをまとめています。
サイドバーから各クラス・モジュールの詳細ページへ移動できます。
モジュール構成¶
PubSubTkは主に次のモジュール群で構成されています:
Core¶
- pubsubtk.core
PubSubBase… PubSubの基底クラス-
PubSubDefaultTopicBase… デフォルトトピック用のユーティリティ -
pubsubtk.store
Store… Pydanticベースの状態管理-
StateProxy… 型安全な状態アクセス -
pubsubtk.topic
AutoNamedTopic… 自動命名トピックDefaultNavigateTopicDefaultUpdateTopicDefaultProcessorTopic
Application Framework¶
- pubsubtk.app
TkApplication… 標準Tkアプリ-
ThemedApplication… テーマ対応アプリ -
pubsubtk.processor
ProcessorBase… ビジネスロジック基底クラス
UI Components¶
Storybook¶
- pubsubtk.storybook
StorybookApplication… Storybookアプリケーション@story… ストーリー定義デコレータ-
StoryContext… ストーリー実行コンテキスト -
pubsubtk.storybook.knobs
KnobSpec… Knobの仕様定義KnobValue… Knob値オブジェクト
Utilities¶
- pubsubtk.utils
make_asyncmake_async_task
クイックナビゲーション¶
よく使うクラス¶
| クラス | 用途 | リンク |
|---|---|---|
TkApplication |
アプリケーション本体 | pubsubtk.app |
ContainerComponentTk |
状態連携UI | pubsubtk.ui |
PresentationalComponentTk |
純粋表示UI | pubsubtk.ui |
ProcessorBase |
ビジネスロジック | pubsubtk.processor |
Store |
状態管理 | pubsubtk.store |
StorybookApplication |
コンポーネント開発環境 | pubsubtk.storybook |
@story |
ストーリー定義 | pubsubtk.storybook.core |
主なメソッド¶
| メソッド | 説明 | 代表的な用途 |
|---|---|---|
pub_update_state() |
状態を更新 | Container, Processor |
pub_switch_container() |
画面切り替え | Container, Processor |
sub_state_changed() |
状態変更監視 | Container |
setup_subscriptions() |
購読設定 | Container, Processor |
refresh_from_state() |
UI更新 | Container |
ctx.knob() |
Storybook動的コントロール | Story定義内 |
よくある使用パターン¶
状態管理の基本¶
from pydantic import BaseModel
from pubsubtk import TkApplication, ContainerComponentTk
class AppState(BaseModel):
counter: int = 0
class MainContainer(ContainerComponentTk[AppState]):
def setup_ui(self): ...
def setup_subscriptions(self):
self.sub_state_changed(self.store.state.counter, self.on_counter_changed)
def refresh_from_state(self): ...
app = TkApplication(AppState)
app.switch_container(MainContainer)
app.run()
Processorの活用¶
from pubsubtk import ProcessorBase
class MyProcessor(ProcessorBase[AppState]):
def setup_subscriptions(self):
self.subscribe("custom.event", self.handle_event)
def handle_event(self):
self.pub_update_state(self.store.state.counter, 42)
# アプリ起動時にProcessor登録
app.pub_register_processor(MyProcessor)
テンプレートの使い方¶
from pubsubtk import TemplateComponentTk
class AppTemplate(TemplateComponentTk[AppState]):
def define_slots(self):
return {
"header": self.header_frame,
"main": self.main_frame,
}
app.set_template(AppTemplate)
app.pub_switch_slot("main", MainContainer)
Storybookでのコンポーネント開発¶
from pubsubtk.storybook import story, StorybookApplication
@story("Button.Primary")
def primary_button(ctx):
text = ctx.knob("text", str, "Click me!")
size = ctx.knob("size", int, 12, range_=(8, 24))
import tkinter as tk
btn = tk.Button(ctx.parent, text=text.value, font=("", size.value))
btn.pack()
return btn
app = StorybookApplication()
app.run()
型安全・IDE支援¶
- StateProxyで型安全な状態更新・補完・定義ジャンプが可能
- ジェネリクスにより、各Store/Container/Processorで型が明示でき、ミス防止&開発効率UP
デバッグ・ユーティリティ¶
enable_pubsub_debug_logging()でPubSubのメッセージ流れを確認可能- 状態のスナップショットや復元もPydantic標準で手軽
命名規則¶
- クラス名: PascalCase(例:
MainContainer) - メソッド名: snake_case(例:
setup_ui) - トピック名: UPPER_CASE(例:
USER_LOGIN) - 状態フィールド: snake_case(例:
user_name)
関連リンク¶
- はじめに
- 実装レシピ集
- サンプル集
- Storybookガイド
- AIリファレンス → ChatGPT・Copilot等でAIコーディングする際はこちらも活用ください
- GitHub Repository
各APIの詳細は左の「API詳細」ナビゲーションからご覧ください。