見出し画像

Pythonによる人工知能学習 その7 アプリにする基礎編

独自のボイスチェンジャーを人工知能で開発したい!という事でPythonの勉強を始めました。今日は、基礎の基礎が終わったので、ローカルでアプリとして動かすための仕組みについて学んで行きます。

✔アプリとは?

画像を読み込んだり、ボタンを押したりという動作を、プログラミング上で行うのではなく、ユーザーインターフェースから行えるものを開発します。

画像1

こういう感じで、ボタンやラベルを実行するウィンドウに表示して操作するアプリが作れるようです。Pythonであまりグラフィカルな処理をしようとは思っていないんですが、最低限の描画やインターフェースが出来たら、仕事効率化や便利な画像解析系のプログラムは作れそうですよね。

ボイスチェンジャーも録音しておいた音声を読み込んだり、インターフェース上で録音したりという事が出来るかも?夢が広がってきた💕

✔アプリを作ってみる

Pythonで操作できる画面を作るために、tkinterという標準ライブラリを使えるようです。

import tkinter as tk

root = tk.Tk()
root.geometry("200x200")

lbl = tk.Label(text="ラベル表示するよ")
btn = tk.Button(text="ボタン押してね")

lbl.pack()
btn.pack()
tk.mainloop()

段々とプログラムが長くなってきてますね。これで、表示出来ます。
tk.Tk()という宣言でオブジェクトを生成して、その生成されたオブジェクトに、ラベルやボタンを順次追加していくようなイメージですね。

✔ボタンで動くようにする

ボタンを押してラベルを変更してみる。

import tkinter as tk

def dispLabel():
   lbl.configure(text="ラベル変えました")
   
root = tk.Tk()
root.geometry("200x100")

lbl = tk.Label(text="ラベル表示するよ")
btn = tk.Button(text="ボタン押してね", command=dispLabel)

lbl.pack()
btn.pack()
tk.mainloop()

tk.Buttonの処理の中に、dispLabelという関数を読み出すコードを追加。関数名は好きな関数でOk。この時関数だからdispLabel()と、()を付けてしまったら駄目だった。(入力時でなくてそのまま先に処理されてた)。

画像2

実行したらこんな感じになりました。これで、ボタンを押したら何か決めておいた処理をして、その結果を画面に反映するという、アプリっぽい基本の動きが再現できました。

✔ボタンを押して今日の運勢を占うアプリ

画像3

こんな感じかな。気になるのは、関数の中で使う変数宣言は、関数の外でやってもいいかな。あと、ラベルの配置で上下のマージンを改行コードで行ったけど、何かそれ専用の宣言は無いんだろうか。

import tkinter as tk
import random

def getLuck():
   lbl3.configure(text=random.choice(kuji))

kuji = ["超大吉", "大吉", "中吉", "吉", "大凶"]

root = tk.Tk()
root.geometry("200x200")

lbl = tk.Label(text="\n今日の運試しアプリ\n")
lbl2 = tk.Label(text="あなたの今日の運勢は…\n")
lbl3 = tk.Label(text="---")
lbl4 = tk.Label(text="")
btn = tk.Button(text="START", command=getLuck)

lbl.pack()
lbl2.pack()
lbl3.pack()
lbl4.pack()
btn.pack()
tk.mainloop()

リストの宣言はやっぱり外のほうがしっくりくる。ラベルの位置調整が可能かどうかはまたおいおいやりましょう。

次回は、同じtkinterを使って、画像を読み込んだり、テキストを入力したりできるアプリに挑戦します。それが出来たら入出力を行う基本も完了して、遂に中身を作っていくフェーズですね。

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