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

python

プログラミング言語習得の方法を大別すると以下の2種類になります。

①基礎~順次積み上げ方式
②ゴール設定&検索方式

①は基礎から高度で複雑なコーディングに向かって、順番に習得していく方法。

②は「こういうアプリが作りたい」や「スクレイピングで副業したい」など、ゴールが先にあって、作りながら調べて覚えていく方法です。

私がシステム開発を職業としていた頃はほとんどが②の方法で、検索して使えそうなコーディングをコピーして組み込んでいくという作業がほとんど。

それで「検索力」が鍛えられたし、この「検索力」がプロには必要なスキルだと感じます。

①の方法だけでは「検索力」が身に付かないので、ある程度で②に移行したほうが良いでしょう。

このブログでは②の方法で解説していきますが、ある程度 python のコードを理解できる人を対象にしますので、①は「ドットインストール」「paiza」などで基礎の概要が理解できる程度にしておいてください。

GUIをPySimpleGUIで実装する下記の並行記事もありますので、よろしくお願いします。

並行記事もよろしく!

python×tkinterでGUI作成

interface

さっそくpythonの標準GUI ツールキット「tkinter」でウィンドウを表示してみましょう。

import tkinter

root = tkinter.Tk()  # ウィンドウの作成
root.mainloop()  #このループでウィンドウ描画を保持

たった3行でウィンドウが表示されます。「jupyter Notebook」でもOK!(ただし、Google Colaboratoryでは実行できません)

今回は「jupyter Notebook」(jupyter LabでもOK)で実行できる内容です。

python の開発環境は Anaconda がおすすめ

まだ python の開発環境が無い方におすすめなのが、AnacondというPythonの実行環境をインストールすることです。(Anacondは各種ツールやライブラリを提供するプラットフォーム)

Anacond をインストールするだけで、jupyter Notebook、jupyter Lab、などが使えるようになります。

VSCode をインストールすると、Anaconda Navigator からも VSCode を起動できるし、Anaconda の仮想環境を構築する機能を使って違うバージョンを管理することもできます。

すでにわかりやすい解説ページがたくさんありますので、検索して環境を構築して戻ってきてください。

ではコーディングに戻りましょう。

ウィンドウの各種設定項目を追加

ここから「タイトル」「画面サイズ」「リサイズ可」「背景色」をカスタマイズして、「ラベル」と「テキストボックス(entry)」などを追加していきます。

# ウィンドウの作成
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/'

# ラベルの作成
label01 = tkinter.Label(root, text='よなをブログ')
label01.pack()  #packは画面最上部の中央から順番に配置
label02 = tkinter.Label(root, text='【python】作りながら覚えるデスクトップアプリ開発')
label02.pack()
label03 = tkinter.Label(root, text='tkinter基礎~')
label03.pack()

#テキストボックス(entry)の作成
text = tkinter.Entry(root,width=36)
text.pack(expand = True)  #packでexpand = Trueを指定すると、残っている領域全ての中央に配置される
text.insert(0,link)  #link 変数にセットしたリンクURLを表示

# ウィンドウのループ処理
root.mainloop()

resizable(1, 1) は(x,y)で、1がリサイズ可、0がリサイズ不可です。

実行結果

この記事のリンクが表示されますから、URLをブラウザにコピペしてこのページに戻って来ることが可能です。

ここまでできたなら、ボタンクリックでリンクページを開くようにしたいですよね。

tkinterのボタンクリックでリンク開く方法

BLOG

まずボタンを追加します。(Entryブロックの下に追記)

# ボタンの作成
button_1 = tkinter.Button(root, text='Linkを開く',command=submit)
button_1.pack(expand = True)

command=○○ はボタンを押したときに ○○関数を実行するという意味です。

ここでは「submit」という関数を呼びますが未定義。これから定義していきます。

import webbrowser

まず webbrowser をインポート(2行目:import tkinter の下)します。

次に submit 関数を定義し、webbrowser.open_new(link) で link 変数に設定された、URLが開きます。

def submit():
    link = text.get()  #linkをtextの内容で上書き
    webbrowser.open_new(link)

submit 関数はラベル・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():
    link = text.get()  #linkをtextの内容で上書き
    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)
text.pack(expand = True)
text.insert(0,link)

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

このコードを実行するとこのようなウィンドウが表示されます。

実行結果

「Linkを開く」ボタンを押すと、ブラウザの新しいタブでこのページが開きます。

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

今回の解説は以上ですが、説明が足りないと感じた箇所はどんどん検索して、「検索力」を養ってください。

「また、ここはこうした方がイイかも」と思ったら、それを実現するために必要なコーディングを探して、すでにある自分のコードに組み込んでいくスキルも重要です。

例えば、「ボタンじゃなくて、URLに下線&青文字でクリックできるリンクにしたらどうか?」とか、「複数のURLをコンボボックスで選ぶのはどうか?」など、考えただけで楽しそうですね。


次のページから応用編として、今回のコードをカスタマイズしていきます。

コメント

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