LoginSignup
0
0

More than 1 year has passed since last update.

スプレッドシート対応抽選デスクトップアプリの作成

Posted at

はじめに

■抽選デスクトップアプリvar0.1 報告

抽選デスクトップアプリを制作してみた。
例えば、ポケモンのパーティをランダムに構築してみたいと思った時や、
トレーディングカードゲームで、デッキから最初に引く5枚をシミュレーションする
等に利用できる。

きっかけ

最近、転職や副業、動画配信での利用を意識するようになり、
苦手意識のあるGUIのデスクトップアプリに挑戦してみることにした。

実は抽選プログラムそのものはすでにできていたのだが、
開発環境から実行するにとどまっていたため、
今回のGUIのデスクトップアプリの制作対象とした。

tkinterの理由

GUIアプリ作成にあたり、様々なライブラリがあったが、
標準で使え、参考資料も多いtKinterを試してみることにした。

開発環境
・Eclipse 4.8 photon
・Python3.10.0

イメージ図

配信でadob XDを利用を試みたが、
配信が上手くいかなかったため、
泣く泣くペイントツールを使用した。
イラストの出来は許してほしい。

抽選アプリ スプレットシート.png

簡単にまとめると以下のような動きをしたい。
・上のテキストボックスに入力したい数を記入、
・中段のリストボックスで抽選したいスプレットシート名を決定
・下段のボタンを入力すると、下部のテキストボックスにて抽出結果が表示される

他にも追加したい機能があったが、最低限にまとめると上記の内容となった。

プログラム部分を作る前に・・・

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の作成

Google Spread Sheets に Pythonを用いてアクセスしてみた

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0