見出し画像

デスクトップアプリケーション

Pythonでデスクトップアプリケーションを作ることができます。Dosプロンプトだと味気ないですよね。
Pythonの基本ライブラリであるtkinterを使います。

まずはメインの画面を作ります。

import tkinter #pythonの基本libraryなのでinstall 不要

#メインのWindowを定義
window=tkinter.Tk()
#タイトルを設定
window.title("デスクトップアプリtemplate")
#画面の大きさ(横×縦)と位置(+x軸+y軸)
window.geometry("900x500+300+100")
#windowが前面に来るようにする
window.attributes("-topmost",True)

#----------------------------------------
#この中に色々とプログラムを足していきます。
#----------------------------------------

#これがないと画面が保持できない
window.mainloop()

次に、Labelで文字を表示させます。

#Labelを付けます
label=tkinter.Label(window, text="自由入力欄")
label.place(x=10,y=10)

座標(10,10)に「自由入力欄」の文字が現れました。


次にテキストの入力枠を設置します。

#入力フォーム
free_box=tkinter.Entry(window)
free_box.place(x=10,y=30)

入力枠が追加されましたね。アプリっぽくなりました
ここに入力された値は、free_textという変数に格納されています。


次はリストです。

#List
label=tkinter.Label(window, text="Tier")
label.place(x=10,y=50)

#ここでは変更不可のタプルで選択肢を定義しました
Tier_List=("Tier 1","Tier 2","Tier 3","Tier 4","Tier 5")

#リストボックスの中のどれが選ばれているかを取得
Tier_Select=tkinter.StringVar(value=Tier_List)

#listvariable=Tier_Selectで選択されている値を格納
#heightはリストの縦の長さ、widthは横の長さです。
Tier=tkinter.Listbox(window, height=5,listvariable=Tier_Select, exportselection=False, width=6)
Tier.place(x=10,y=70)


色々試しましょう。コンボボックスです。
コンボボックスを使うには、ttkというモジュールを使わなければなりません。

from tkinter import ttk #コンボボックス用
#comboボックス
label=tkinter.Label(window, text="リスク")
label.place(x=60,y=50)
combo=tuple(range(1,5))
risk=ttk.Combobox(window,values=combo,state="readonly")
risk.place(x=60,y=70)


ラジオボタンを設置します。コードは少し多いですが気にせず、必要なところだけ変更して使いましょう。

#ラジオボタン
label=tkinter.Label(window, text="男/女")
label.place(x=60,y=100)
gender=tkinter.IntVar() #radiobuttonのどれが押されているかを取得する
radio_button1=tkinter.Radiobutton(window,text="男",value=1,variable=gender)
radio_button1.place(x=60,y=120)
radio_button2=tkinter.Radiobutton(window,text="女",value=2,variable=gender)
radio_button2.place(x=60,y=140)

ラジオボタンが出ました。

ボタンを配置します。

#button
button=tkinter.Button(window,text="表示")
button.place(x=10,y=200)

ボタンが現れました。当然押しても何も起こりません。

ボタンにアクションを追加します。自由入力欄に入力した値を表示させるためのユーザ定義関数(print_function)を作ります。

def print_function():
#自由入力欄に入力した値をfree_textという変数に格納
free_text=free_box.get()
print(free_text)

そしてボタンを押すと、print_functionが動くようにします。

#button
button=tkinter.Button(window,text="表示",command=print_function)
button.place(x=10,y=200)

自由記入欄に入力するとその文字がプリントされるようになりました。

せっかくなのでメッセージボックスで出るようにします。

messageboxというモジュールを使います。

from tkinter import messagebox
def print_function():
#自由入力欄に入力した値をfree_textという変数に格納
free_text=free_box.get()
print(free_text)
messagebox.showinfo("入力内容", free_text)

これで実行するとメッセージボックスが出てきます。

改行させて全部の入力値を出力しましょう。
radioボタンはそのままでは出力できないので、if文でテキストを作っています。

def print_function():
#自由入力欄に入力した値をfree_textという変数に格納
free_text=free_box.get()
Tier_out=Tier.get((Tier.curselection()))
risk_out=risk.get()
if gender.get()==1:
gender_out="男"
elif gender.get()==2:
gender_out="女"
else:
gender_out=""

messagebox.showinfo("入力内容","自由記載:"+free_text+"\n"+"Tier:"+Tier_out+"\n"+"Risk:"+risk_out+"\n"+"性別:"+gender_out)

こんな感じで出力されます。(例外対応などしていないので、未入力があるとエラーが出ます。)

次にフォルダー選択機能を追加します。
filedialogモジュールが必要です。

from tkinter import filedialog

ユーザ定義関数を作ります。

def folder_select():
dir = 'C:\'#デフォルトフォルダー
fld = filedialog.askdirectory(initialdir = dir)
print(fld)
#選択したフォルダーを表示
label=tkinter.Label(window, text="選択したフォルダー : "+fld)
label.place(x=10,y=260)

これを呼び出すボタンを配置します。

#フォルダ選択用button
button2=tkinter.Button(window,text="Folder選択...",command=folder_select)
button2.place(x=10,y=230)

こんな感じで選択したフォルダーパスが表示されます。

コード全体です。

import tkinter #pythonの基本libraryなのでinstall 不要
from tkinter import ttk #コンボボックス用
from tkinter import messagebox
from tkinter import filedialog

def print_function():
    #自由入力欄に入力した値をfree_textという変数に格納
    free_text=free_box.get()
    Tier_out=Tier.get((Tier.curselection()))
    risk_out=risk.get()
    if gender.get()==1:
        gender_out="男"
    elif gender.get()==2:
        gender_out="女"
    else:
        gender_out=""
        
    messagebox.showinfo("入力内容","自由記載:"+free_text+"\n"+"Tier:"+Tier_out+"\n"+"Risk:"+risk_out+"\n"+"性別:"+gender_out)

    
def folder_select():
    dir = 'C:\\'#デフォルトフォルダー
    fld = filedialog.askdirectory(initialdir = dir) 
    #選択したフォルダーを表示
    label=tkinter.Label(window, text="選択したフォルダー : "+fld)
    label.place(x=10,y=260) 
    
    

#メインのWindowを定義
window=tkinter.Tk()

#タイトルを設定
window.title("デスクトップアプリtemplate")

#画面の大きさ(横×縦)と位置(+x軸+y軸)
window.geometry("900x500+300+100")

#windowが前面に来るようにする
window.attributes("-topmost",True) 

#Labelを付けます
label=tkinter.Label(window, text="自由入力欄")
label.place(x=10,y=10) 

#入力フォーム
free_box=tkinter.Entry(window)
free_box.place(x=10,y=30)

#List
label=tkinter.Label(window, text="Tier")
label.place(x=10,y=50)
#ここでは変更不可のタプルで選択肢を定義しました
Tier_List=("Tier 1","Tier 2","Tier 3","Tier 4","Tier 5")

#リストボックスの中のどれが選ばれているかを取得
Tier_Select=tkinter.StringVar(value=Tier_List)

#listvariable=Tier_Selectで選択されている値を格納
#heightはリストの縦の長さ、widthは横の長さです。
Tier=tkinter.Listbox(window, height=5,listvariable=Tier_Select, exportselection=False, width=6) 
Tier.place(x=10,y=70)

#comboボックス
label=tkinter.Label(window, text="リスク")
label.place(x=60,y=50)

combo=tuple(range(1,5))
risk=ttk.Combobox(window,values=combo,state="readonly")
risk.place(x=60,y=70)

#ラジオボタン 
label=tkinter.Label(window, text="男/女")
label.place(x=60,y=100)

gender=tkinter.IntVar() #radiobuttonのどれが押されているかを取得する
radio_button1=tkinter.Radiobutton(window,text="男",value=1,variable=gender)
radio_button1.place(x=60,y=120)
radio_button2=tkinter.Radiobutton(window,text="女",value=2,variable=gender)
radio_button2.place(x=60,y=140)

#表示用button
button=tkinter.Button(window,text="表示",command=print_function)
button.place(x=10,y=200)


#フォルダ選択用button
button2=tkinter.Button(window,text="Folder選択...",command=folder_select)
button2.place(x=10,y=230)


#これがないと画面が保持できない
window.mainloop()

最終形はこんな感じになります。

この記事が気に入ったらサポートをしてみませんか?