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

python

この記事は以下の記事の GUI のコーディングを「tkinter」から「PySimpleGUI」用に置換えた並行記事です。

python-tkinter

先に執筆している tkinter の記事よりもテンポよく進めていく予定で、内容も違ってくるはずです。

では早速、最小限のコードでGUIを表示してみましょう。

開発環境は「jupyter Notebook」でOKです。

この記事では、

Anaconda のインストールすることで使える、jupyter Notebook を想定して記事を書いていますので、開発環境をこれから用意するなら、Anaconda をおすすめします。

python×PySimpleGUIでGUI作成

PySimpleGUI公式サイトreadme Japanese) を参照しましょう。

まずインストールする必要があります。

pip install PySimpleGUI

以下のコードをコピペして実行してみましょう。

import PySimpleGUI as sg
layout = [
    [sg.Text('Python GUI')],
    [sg.Button('Ok')],
]
window = sg.Window('test', layout)
event, values = window.read()
window.close()

このようなウィンドウが表示されます。

さらにテキストやボタンの処理などを追加してみましょう。

import PySimpleGUI as sg
import webbrowser

#このぺーじのリンク
link='https://bliss-growth.com/python_pysimplegui/'
#レイアウトの作成
layout = [
    [sg.Text('よなをブログ')],
    [sg.Text('【python】作りながら覚えるデスクトップアプリ開発')],
    [sg.Text('PySimpleGUI基礎~')],
    [sg.Multiline(link,size=(50,2))],
    [sg.Submit(button_text='URLを表示')],
]

window = sg.Window('PySimpleGUIでGUI作成', layout)

while True:
    event, values = window.read()
    
    if event is None:
        print('exit')
        break
        
    if event == 'URLを表示':
        webbrowser.open_new(link)
        
window.close()

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

はい。この記事のURLが表示され、「URLを表示」ボタンを押すと、ブラウザの新しいタブでURLのページ(つまりこのページ)が表示されるGUIになりました。

では、URLを「https://www.youtube.com/」に書き換えて実行してみると・・・

Youtubeではなくこのページが開いてしまいますね。

はい。Multiline のテキストを取得して webbrowser.open_new に渡さなければいけません。

「key」を使って値の受け渡しができるようです。

[sg.Multiline(link,size=(50,2), key='-URL-')],  # keyを設定:-URL-
webbrowser.open_new(values['-URL-'])  # キーで指定して値を取得

全体のコードは以下のようになりました。

import PySimpleGUI as sg
import webbrowser

#このぺーじのリンク
link='https://bliss-growth.com/python_pysimplegui/'
#レイアウトの作成
layout = [
    [sg.Text('よなをブログ')],
    [sg.Text('【python】作りながら覚えるデスクトップアプリ開発')],
    [sg.Text('PySimpleGUI基礎~')],
    [sg.Multiline(link,size=(50,2), key='-URL-')],
    [sg.Submit(button_text='URLを表示')],
]

window = sg.Window('PySimpleGUIでGUI作成', layout)

while True:
    event, values = window.read()
    
    if event is None:
        print('exit')
        break
        
    if event == 'URLを表示':
        webbrowser.open_new(values['-URL-'])
        
window.close()

実行して・・・

URLを「https://www.youtube.com/」に書き換えてボタンを押してみると、

はい。Youtube が表示されましたね。


この続きはまた後日執筆しますので、また戻ってきてください。

よろしくお願いいたします。

コメント

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