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
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー