【python】作りながら覚えるデスクトップアプリ開発|PySimpleGUI

python

5ページ目です。

新たにカテゴリーを追加したり、カテゴリーやURLを削除する処理を追加していきましょう!

カテゴリーやURLの追加や削除の関数

カテゴリーを追加する関数を追加する場合、以下のように add_category 関数を定義し、sitelist.json ファイルに新しいカテゴリーを追加するように実装することができます。

def add_category(category_name):
    json_dict = read_json()
    if category_name in json_dict:
        print('The category already exists.')
        return
    
    json_dict[category_name] = {}
    with open(json_path, 'w') as f:
        json.dump(json_dict, f, ensure_ascii=False, indent=4)
    print(f'The category "{category_name}" has been added successfully.')

カテゴリーやURLを削除する処理を追加する場合、以下のように delete_category 関数と delete_site 関数を定義し、それぞれ指定されたカテゴリーまたはURLを sitelist.json ファイルから削除するように実装することができます。

def delete_category(category_name):
    json_dict = read_json()
    if category_name not in json_dict:
        print('The category does not exist.')
        return
    
    del json_dict[category_name]
    with open(json_path, 'w') as f:
        json.dump(json_dict, f, ensure_ascii=False, indent=4)
    print(f'The category "{category_name}" has been deleted successfully.')

def delete_site(category_name, site_name):
    json_dict = read_json()
    if category_name not in json_dict:
        print(f'The category "{category_name}" does not exist.')
        return
    
    sites = json_dict[category_name]
    if site_name not in sites:
        print(f'The site "{site_name}" does not exist in the category "{category_name}".')
        return
    
    del sites[site_name]
    with open(json_path, 'w') as f:
        json.dump(json_dict, f, ensure_ascii=False, indent=4)
    print(f'The site "{site_name}" in the category "{category_name}" has been deleted successfully.')

これらの関数を適宜 while ループの中で呼び出すことで、GUI 上でカテゴリーやURLを追加・削除することができます。

ただし、UI の更新なども行う必要があるため、実装には注意が必要です。

関数を操作する例

追加・削除するための関数をテストするために、以下のような入力例を考えます。

例として、以下のような初期状態の sitelist.json ファイルがあるとします。

{
    "Search Engines": {
        "Google": "https://www.google.com/",
        "Yahoo!": "https://www.yahoo.com/"
    },
    "Programming Resources": {
        "GitHub": "https://github.com/",
        "Stack Overflow": "https://stackoverflow.com/"
    }
}

これに対して、以下のような関数の呼び出しを行うことで、カテゴリーやURLの追加・削除をテストすることができます。

# カテゴリーの追加
add_category("News")
# 出力: The category "News" has been added successfully.

# URLの追加
json_dict = read_json()
json_dict["Search Engines"]["Bing"] = "https://www.bing.com/"
with open(json_path, 'w') as f:
    json.dump(json_dict, f, ensure_ascii=False, indent=4)
# sitelist.jsonの内容:
# {
#     "Search Engines": {
#         "Google": "https://www.google.com/",
#         "Yahoo!": "https://www.yahoo.com/",
#         "Bing": "https://www.bing.com/"
#     },
#     "Programming Resources": {
#         "GitHub": "https://github.com/",
#         "Stack Overflow": "https://stackoverflow.com/"
#     },
#     "News": {}
# }

# URLの削除
delete_site("Search Engines", "Bing")
# 出力: The site "Bing" in the category "Search Engines" has been deleted successfully.

# カテゴリーの削除
delete_category("Programming Resources")
# 出力: The category "Programming Resources" has been deleted successfully.

上記の例では、新しいカテゴリー "News" を追加し、"Search Engines" カテゴリーに "Bing" という名前のURLを追加し、"Search Engines" カテゴリーから "Bing" のURLを削除し、"Programming Resources" カテゴリーを削除する処理を行っています。

これらの操作が正しく行われているかどうか、ファイルの内容を確認することで確認できます。

ここからは・・・

はい、いつもなら、全体のコードを掲載するのですが、それではコピペで動かしてしまって、学習効果が望めないと思い、全コード掲載はやめました。

手順としては、

  • 関数と操作例を元に、入力値をコード内にべた書きして動かしてみる
  • 必要なボタンやラベルやEntryなどを追加して、外部入力に置き換えてみる
  • 動作確認して完成させる

といったステップでコードを完成させてみてください。

エラーやわからないことがあったら調べて解決するということも必要なスキルです。

あきらめないで、チャレンジしてみてくださいね。

陰ながら応援しています。

まとめ

5ページにも及ぶ記事にお付き合いいただきありがとうございました。

これでこの記事は終了です。

ここまでお読みくださってありがとうございました。

また次の記事でお会いできるのを楽しみにしております。

Python でGUIアプリケーションを作成します PythonでGUIアプリをEXE形式で納品します

コメント

タイトルとURLをコピーしました