【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()
実行すると、この記事の最初のページが開きます。(結果は同じですね)
今回は以上になります。
コメント