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

python
  1. python×tkinterでGUI作成
    1. python の開発環境は Anaconda がおすすめ
    2. ウィンドウの各種設定項目を追加
  2. tkinterのボタンクリックでリンク開く方法
  3. ここまでの全コード
  4. 【python】tkinter基礎⇒応用編
    1. URLをクリックするとリンクを開くようにカスタマイズ
    2. リンクを開く処理の実装
  5. 今回カスタマイズした結果の全コード
  6. 複数ページのリンクを表示する
    1. forループでページ数の連番を追加する処理
    2. リストにしたURLをlistboxで表示してみよう!
    3. submit 関数のカスタマイズ
  7. 今回のカスタマイズした全コード
  8. 設定ファイル(*.ini)の処理をコーディング
    1. 設定ファイルの保存フォルダを作成
    2. 保存フォルダに設定ファイル(*.ini)を保存
    3. 設定ファイル(*.ini)を扱うモジュール
  9. これまでのコードに設定ファイル(*.ini)の処理を組み込む
  10. JSONファイルで、お気に入りサイトのURLを管理
    1. サブアプリの画面をカスタマイズ
    2. 辞書型(ディクショナリー型)
  11. JSONファイルにデータを追加するツールを作成
  12. JSON書き込み処理の実装
    1. コードの解説
    2. URLの正規表現によるチェック
    3. URLの存在チェック
  13. 動作確認
  14. 今回使用するJSONファイル
  15. コンボボックスとリストボックスの追加
    1. コンボボックスにカテゴリーを追加する関数
    2. URLをブラウザで開く処理
  16. 今回の全コード
    1. 動作確認
  17. カテゴリーやURLの追加や削除の関数
    1. add_category 関数の説明
    2. remove_category関数の説明
    3. remove_url関数の説明
  18. 関数を操作する例
  19. ここからは・・・
  20. まとめ

【python】tkinter基礎⇒応用編

2ページ目です。では、前回までのコードをカスタマイズしていきましょう。

前回のコードを実行したウィンドウはこれですね。

実行結果

URLをクリックするとリンクを開くようにカスタマイズ

例えば依頼された案件で、「これ、ボタンじゃなくて文字をリンクにできますか?」という要望があった場合、何が必要でしょうか。

①Entryの文字色を青にする
②下線にする
③Entryのマウスホバー時に手のマウスアイコンを表示

見た目に関しては、この3つで実現できそうですね。

①の方法を「tkinter 文字色」で調べると、「foreground=」か「fg=」で「16進数」でも「色名」でも指定できることが分かります。fg='blue' だと色が暗すぎなので、 fg='#0080ff' にしましょう。

②の方法を「tkinter 文字 下線」で調べると、font のオプションで「underline」を設定すれば良さそうです。font=("Arial",14,"underline")にしました。

③の方法は検索キーワードをあれこれ切り替えながら調べると、Entry に「cursor='hand2'」と設定すればOKだとわかります。

では実際にコードをカスタマイズして動作確認してみましょう。

#テキストボックス(entry)の作成
text = tkinter.Entry(root,width=36,fg='#0080ff',font=("Arial",14,"underline"), justify="center",cursor='hand2')
text.pack(expand = True)
text.insert(0,link)

ついでに文字を「justify="center"」で中央寄せにしてボタンも非表示にしてあります。

見た目はこれで良いでしょう。

リンクを開く処理の実装

さて、前回の submit 関数がそのまま使えそうですが、Entry にボタンと同じように 「command=」は使えないはずですので、「tkinter Entry クリック」などと検索します。

#テキストボックス(entry)の作成
text = tkinter.Entry(root,width=36,fg='#0080ff',font=("Arial",14,"underline"), justify="center",cursor='hand2')
text.pack(expand = True)
text.insert(0,link)
text.bind('<Button-1>',submit)  #Entry上で左クリックしたときに submit 関数を呼ぶ

text.bind で Entry 上の左クリックイベントが検出できることがわかりました。

今回カスタマイズした結果の全コード

はい。このようなコードになりました。

import tkinter
import webbrowser

# ウィンドウの作成
root = tkinter.Tk()
root.title('python×tkinterでGUI作成')
root.geometry('500x200')
root.resizable(1, 1)
root.config(bg='LightSteelBlue1')
root.attributes("-topmost", True)

#このぺーじのリンク
link='https://bliss-growth.com/python_tkinter/'

#関数の定義
def submit(e):
    link = text.get()
    webbrowser.open_new(link)

# ラベルの作成
label01 = tkinter.Label(root, text='よなをブログ')
label01.pack()
label02 = tkinter.Label(root, text='【python】作りながら覚えるデスクトップアプリ開発')
label02.pack()
label03 = tkinter.Label(root, text='tkinter基礎~')
label03.pack()

#テキストボックス(entry)の作成
text = tkinter.Entry(root,width=36,fg='#0080ff',font=("Arial",14,"underline"), justify="center",cursor='hand2')
text.pack(expand = True)
text.insert(0,link)
text.bind('<Button-1>',submit)

# ボタンの作成
# button_1 = tkinter.Button(root, text='Linkを開く',command=submit)
# button_1.pack(expand = True)
    
# ウィンドウのループ処理
root.mainloop()

実行すると、この記事の最初のページが開きます。(結果は同じですね)

このブログページが表示された

今回は以上になります。

コメント

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