質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

546閲覧

英単語のクイズプログラムを動かしたい。

believe

総合スコア91

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/03/06 04:37

編集2022/03/06 07:22

1.前提・実現したいこと
英単語のクイズプログラムを動かしたい。

2.発生している問題・エラーメッセージ
問題文が表示されるが選択肢が表示されません。

イメージ説明
3.該当のソースコード
https://ossanengineer.hatenablog.com/entry/2021/02/07/083354

excelファイル
https://www.jamsystem.com/ancdic/index.html

import tkinter import numpy as np import random import time import xlrd import datetime import openpyxl as px #エクセルを読み込むセクション wb = xlrd.open_workbook('./ANC30000_1014_Dic.xls') #'Japanise+'のシートをアクティブにする sheet = wb.sheet_by_name('Japanese+') now = datetime.datetime.now() filename = now.year*10000 + now.month*100 + now.day filename = str(filename) filename += "english_machigai.xlsx" #間違いを記録するエクセル try: wb_e = px.load_workbook(filename) except: wb_e = px.Workbook() ws1 = wb_e['Sheet'] ws1["A1"].value = "間違えた単語" ws1["B1"].value = "間違えた単語の日本語の意味" ws1["C1"].value = "間違えた単語の解説" r_e = ws1.max_row #イベントボタンのセクション ##使う変数を定義。出題エクセルの行数、出題に使う乱数(a, t), 問題文(question), 出題数と間違いのカウント(count, error) r_max = sheet.nrows a = np.random.randint(3, r_max, (1, 4)) t = np.random.choice(a[0]) question = sheet.cell(t,0).value count = 0 error = 0 #更新ボタン #こいつが実行されると、問題文が更新される def btn_click(): global tki global a global t global questios a = np.random.randint(3, r_max, (1, 4)) t = np.random.choice(a[0]) question = sheet.cell(t,0).value random.shuffle(a[0]) btn_1.configure(text=sheet.cell(a[0][0],3).value,command = btn_click_n1) btn_2.configure(text=sheet.cell(a[0][1],3).value,command = btn_click_n2) btn_3.configure(text=sheet.cell(a[0][2],3).value,command = btn_click_n3) btn_4.configure(text=sheet.cell(a[0][3],3).value,command = btn_click_n4) lbl_q.config(text = "問題: "+str(question)+"の意味はどれでしょう?") #ボタンの入力に応じて正解かどうかを判断したいが、なぜか起動するとすでに実行されている<=引数が入っているとダメ見たいですね。。なんでやろ def ans(num): global tki global a global t global r_e global error global count count += 1 if a[0][num] == t: print ("正解です") else: r_e += 1 error += 1 print ("不正解です") print ("正解は",sheet.cell(t,3).value,"です\n間違えたのでエクセルに書き込みました") ws1["A"+str(r_e)].value = sheet.cell(t,0).value ws1["B"+str(r_e)].value = sheet.cell(t,3).value ws1["C"+str(r_e)].value = sheet.cell(t,4).value wb_e.save(filename) btn_click() #ボタン1~4がクリックされたときに実行される関数 def btn_click_n1(): ans(0) def btn_click_n2(): ans(1) def btn_click_n3(): ans(2) def btn_click_n4(): ans(3) count = 0 error = 0 tki = tkinter.Tk() tki.geometry('300x300') tki.title('英単語を覚えるアプリ') # ラベル(出題問題の) lbl_q = tkinter.Label(text ="問題: "+question+"の意味はどれでしょう?") lbl_q.place (x=80, y =50) # テキストボックス btn_1 = tkinter.Button(tki,text=sheet.cell(a[0][0],3).value,command=btn_click_n1) btn_1.place(x=90, y=100) #btn_1.pack() btn_2 = tkinter.Button(tki,text=sheet.cell(a[0][1],3).value,command=btn_click_n2) btn_2.place(x=180, y=100) #btn_2.pack() btn_3 = tkinter.Button(tki,text=sheet.cell(a[0][2],3).value,command=btn_click_n3) btn_3.place(x=90, y=150) #btn_3.pack() btn_4 = tkinter.Button(tki,text=sheet.cell(a[0][3],3).value,command=btn_click_n4) btn_4.place(x=180, y=150) #btn_4.pack() # 更新ボタン # 画面をそのまま表示 tki.mainloop() print (count,"回のクイズに挑戦して正解率は",error,"/",count,"でした")

4.自分で調べたことや試したこと
ライブラリのインストールをしました。
sudo pip3 install xlrd

sudo apt-get install python3-pip

python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux

sudo apt-get -y install python3-tk

<補足>
tki.title('英単語を覚えるアプリ')のタイトルが表示されていないので
from tkinter import *を試しましたがうまくいきませんでした。
tki周りが問題のような気がします。

python3 -m tkinter
でtkiが正常にインストールされていることを確認しました。

5.使っているツールのバージョンなど補足情報
cromebook

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/03/06 04:41

このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
melian

2022/03/06 05:56

btn_1 = tkinter.Button(tki, text=sheet.cell(a[0][0],3).value,command=btn_click_n1) とされていますが、これを btn_1 = tkinter.Button(text=sheet.cell(a[0][0],3).value,command=btn_click_n1) とするとどうなるでしょうか?(tki を指定しない)
believe

2022/03/06 06:17

回答ありがとうございます。 tkiを指定しないようにしましたが、選択肢のボタンが表示されませんでした。ありがとうございました。
believe

2022/03/06 06:57

tki.title('英単語を覚えるアプリ')のタイトルが表示されていないので from tkinter import *を試しましたがうまくいきませんでした。 tki周りが問題のような気がします。
guest

回答1

0

自己解決

pip3 install numpy
pip3 install openpyxl

ライブラリを追加インストールしたら解決しました。
ありがとうございます。

投稿2022/03/20 07:33

believe

総合スコア91

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問