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

python

【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をコピーしました