#はじめに
■抽選デスクトップアプリvar0.1 報告
抽選デスクトップアプリを制作してみた。
例えば、ポケモンのパーティをランダムに構築してみたいと思った時や、
トレーディングカードゲームで、デッキから最初に引く5枚をシミュレーションする
等に利用できる。
##きっかけ
最近、転職や副業、動画配信での利用を意識するようになり、
苦手意識のあるGUIのデスクトップアプリに挑戦してみることにした。
実は抽選プログラムそのものはすでにできていたのだが、
開発環境から実行するにとどまっていたため、
今回のGUIのデスクトップアプリの制作対象とした。
##tkinterの理由
GUIアプリ作成にあたり、様々なライブラリがあったが、
標準で使え、参考資料も多いtKinterを試してみることにした。
開発環境
・Eclipse 4.8 photon
・Python3.10.0
##イメージ図
配信でadob XDを利用を試みたが、
配信が上手くいかなかったため、
泣く泣くペイントツールを使用した。
イラストの出来は許してほしい。
簡単にまとめると以下のような動きをしたい。
・上のテキストボックスに入力したい数を記入、
・中段のリストボックスで抽選したいスプレットシート名を決定
・下段のボタンを入力すると、下部のテキストボックスにて抽出結果が表示される
他にも追加したい機能があったが、最低限にまとめると上記の内容となった。
##プログラム部分を作る前に・・・
Pythonでスプレットシート使うためには準備が必要
Google Drive API というのを有効にする等あるが、
詳細は参考サイトを御覧ください。
ソースコードについては、手探りの部分が多く
整理されていないところもある。
ご了承ください。
今回は一部のコードを載せている。
#プログラムについて
###ライブラリインポート
#Random_Form.py
from tkinter import *
from tkinter import ttk
import Qdeeplearn as ql
tkinter関係のライブラリに加え、
自作したライブラリをimportしている。
自作ライブラリは、元々作成している
「スプレットシートを読み込み、抽選する」プログラムである。
名残として機械学習関連の名前となっている。
##メイン関数
#メイン関数
if __name__ == '__main__':
#自作ライブラリ スプレットシート読み込みクラスを起動
a=ql.get_sheet_titles()
#Tkinterライブラリにて画面を表示
win = Tk()
app=Main_Application(master=win)
app.mainloop()
処理としては、
スプレットシート関係のクラスを読み込み、
画面を表示しているだけである。
##Main_Applicationクラス
class Main_Application(ttk.Frame):
def __init__(self,master):
super().__init__(master)
self.pack()
master.minsize(width=480,height=360)
master.title("抽選アプリ")
self.get_texts=""
self.button_list_flag=False
self.widget()
画面を表示するクラスである。
self.widget()
以降にテキストボックス等のオブジェクトを配置する。
##動作部分
def buttonClick(self,combox_data):
len_value=self.list_entry_num.get()
self.result_txt.delete("1.0", "end")
if len_value == "":
self.button_list_flag=False
elif (len_value.isdecimal()==True):
if combox_data=="":
self.button_list_flag=False
self.result_txt.insert("end","リストを選んでください")
elif combox_data!="":
self.button_list_flag=True
sl=self.get_name_data(combox_data,int(len_value))
self.button_list_flag=True
for i in sl:
self.result_txt.insert("end",i + "\n" )
else:
self.button_list_flag=False
self.result_txt.insert("end","半角数字を入力してください")
ボタンをクリックした後の処理を表す。
def get_name_data(self,sheets_list,cardunits):
wkst = ql.load_Spreadsheets(sheets_list)
cardlist=[]
reslist=[]
nlist=[]
rangse=wkst.get_all_values()
nlist=ql.organize(rangse,"名前")
cardlist=ql.data_processing(nlist)
reslist=ql.roulette_getlist_few(cardlist,cardunits)
return reslist
こちらの関数で、スプレットシートの結果をテキストボックスに伝える。
以上です。
見てくださってありがとうございました。
参考サイト
Python入門 (6) - TkinterによるGUIの作成