特定の条件の間
問題を作成して出題できるようにしたい
次の問題ボタンを押すと次のページが作成されて問題が出題されるようにしたいです
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード import tkinter as tk import tkinter.ttk as ttk from numpy.lib.ufunclike import _fix_out_named_y from sympy import * import pandas as pd import numpy as np import random import matplotlib.pyplot as plt from sympy.external.importtools import WARN_NOT_INSTALLED from sympy.matrices import common #シンボルを定義 x = Symbol("x") y = Symbol("y") z = Symbol("z") a = Symbol("a") b = Symbol("b") c = Symbol("c") #基本問題作成 def create_question_1(Question_No,Val_No_1,Val_No_2,Val_No_3): if Question_No == 1: if Val_No_1 == 1: Integ = x ans = integrate(Integ) out_Integ = "∮"+"x"+" "+"dx" else: Integ =Val_No_1*x ans = integrate(Integ) out_Integ ="∮"+str(Val_No_1)+"x"+" "+"dx" elif Question_No == 2: if Val_No_1 and Val_No_2 == 1: Integ = x**2+x ans = integrate(Integ) out_Integ = "∮"+"x**2"+"+"+"x"+" "+"dx" else: Integ = Val_No_1*x**2+Val_No_2*x ans = integrate(Integ) out_Integ = "∮"+str(Val_No_1)+"x**2"+"+"+str(Val_No_2)+"x"+" "+"dx" else: if Val_No_1 and Val_No_2 and Val_No_3 == 1: Integ = x**3+x**2+x ans = integrate(Integ) out_Integ = "∮"+"x**3"+"+"+"x**2"+"+"+"x"+"+"+" "+"dx" else: Integ = Val_No_1*x**3+Val_No_2*x**2+Val_No_3 ans = integrate(Integ) out_Integ = "∮"+str(Val_No_1)+"x**3"+"+"+str(Val_No_2)+"x**2"+"+"+str(Val_No_3)+"x"+" "+"dx" return ans,out_Integ #ウィンドウ切り替え def change_window(frame_name): frame_name.tkraise() #フレーム作成 def frame_create(): Frame_name = ttk.Frame(root) Frame_name.grid(row=0,column=0,sticky="nsew",pady=20) return Frame_name #問題ページ作成 def create_question(frame_name,change_frame,ans,Out_Integ): label_1 = ttk.Label(frame_name,text="以下の問題を解いてください") label_2 = ttk.Label(frame_name,text="回答を表示します") label_app = ttk.Label(frame_name,text=Out_Integ) Entry_app = ttk.Entry(frame_name,width=30) button_home = ttk.Button(frame_name,text="ホームに戻る",command=lambda:change_window(change_frame)) answer_button = ttk.Button(frame_name,text="回答",command=lambda:Answer_button(Entry_app,ans,label_2)) label_1.pack() label_2.place(x=350,y=350) label_app.pack() Entry_app.place(x=300,y=300) button_home.place(x=350,y=420) answer_button.place(x=350,y=520) #回答ボタンの動き def Answer_button(Entry_name,ans,label_name): Entry_ans = Entry_name.get() str_ans = str(ans) if str_ans == Entry_ans: label_name.configure(text="正解") else: label_name.configure(text="不正解") #ラベル作成 def label_create(frame_name,text_name): label_name = ttk.Label(frame_name,text=text_name) return label_name #ボタン生成 def button_create(frame_name,text_name,button_name,change_window_name): button_frame = ttk.Button(frame_name,text=text_name,command=lambda:button_name(change_window_name)) return button_frame #ラベル配置 def label_placcement(label_name,x_coord,y_coord): label_name.place(x=x_coord,y=y_coord) #ボタン配置 def button_placcement(button_name,x_coord,y_coord): button_name.place(x=x_coord,y=y_coord) if __name__ == "__main__": root = tk.Tk() root.geometry("800x800") root.grid_rowconfigure(0,weight=1) root.grid_columnconfigure(0,weight=1) #メインフレーム作成 frame = frame_create() frame_app_1 = frame_create() frame_app_2 = frame_create() frame_app_3 = frame_create() frame_app_4 = frame_create() frame_app_5 = frame_create() frame_app_6 = frame_create() #ホームウィジェット作成 label_1 = label_create(frame,"あなたの成長する積分アプリ") label_2 = label_create(frame,"⚠️x**2はxの2乗x**3はxの3乗を表しています") label_3 = label_create(frame,"1:基本レベル") label_4 = label_create(frame,"2:定期テストレベル") label_5 = label_create(frame,"3:センター試験レベル") label_6 = label_create(frame,"4:難関私立レベル") label_6 = label_create(frame,"5:難関国公立レベル") label_7 = label_create(frame,"6:弱点レベル") #ラベル配置 label_placcement(label_1,290,50) label_placcement(label_2,290,150) label_placcement(label_3,330,250) label_placcement(label_4,330,350) label_placcement(label_5,330,450) label_placcement(label_6,330,550) label_placcement(label_7,330,650) #問題ページボタン作成 button_1 = button_create(frame,"問題へ",change_window,frame_app_1) button_2 = button_create(frame,"問題へ",change_window,frame_app_2) button_3 = button_create(frame,"問題へ",change_window,frame_app_3) button_4 = button_create(frame,"問題へ",change_window,frame_app_4) button_5 = button_create(frame,"問題へ",change_window,frame_app_5) button_6 = button_create(frame,"問題へ",change_window,frame_app_6) #ボタン配置 button_placcement(button_1,350,280) button_placcement(button_2,350,380) button_placcement(button_3,350,480) button_placcement(button_4,350,580) button_placcement(button_5,350,580) button_placcement(button_6,350,680) #問題作成 i = 0 j = 0 while i <= 10: Question_No = random.randint(1,3) Val_No_1 = random.randint(1,9) Val_No_2 = random.randint(1,9) Val_No_3 = random.randint(1,9) ans,Out_Integ = create_question_1(Question_No,Val_No_1,Val_No_2,Val_No_3) create_question(frame_app_1,ans,frame,Out_Integ) i += 1 j += 1 Frame_Name = "frame_"+str(i) Frame_Name_1 = "frame_"+str(j) Frame_Name = frame_create() Frame_Name_1 = frame_create() button = ttk.Button(frame_app_1,text="次の問題へ",command = change_window(Frame_Name)) button.place(x=350,y=670) frame.tkraise() root.mainloop()
試したこと
ここに問題に対して試したことを記載してください。
問題作成時の"次の問題へ"の処理時にcreate_questionを呼び出すよにしたが
思い通りの動きをしなかった
i = 0 j = 0 count = 0 while count < 10: count += 1 i += 1 j += 1 Question_No = random.randint(1,3) Val_No_1 = random.randint(1,9) Val_No_2 = random.randint(1,9) Val_No_3 = random.randint(1,9) ans,Out_Integ = create_question_1(Question_No,Val_No_1,Val_No_2,Val_No_3) Frame_Name = "frame_app_"+str(i) Frame_Name_1 = "frame_app_1"+str(j) Frame = frame_create() Frame_1 = frame_create() Frame_Name = Frame Frame_Name_1 = Frame_1 create_question(Frame_Name,frame,ans,Out_Integ) next_question_button = ttk.Button(Frame_Name,text="次の問題へ",command=lambda:change_window(Frame_Name_1)) next_question_button.place(x=600,y=600)
現状のループ内
コード count = 0 while count < 10: count += 1 Question_No = random.randint(1,3) Val_No_1 = random.randint(1,9) Val_No_2 = random.randint(1,9) Val_No_3 = random.randint(1,9) ans,Out_Integ = create_question_1(Question_No,Val_No_1,Val_No_2,Val_No_3) question_Frame = frame_create() create_question(frame_app_1 ,frame,ans,Out_Integ) create_question(question_Frame ,frame,ans,Out_Integ) next_question_button = ttk.Button(frame_app_1,text="次の問題へ",command=functools.partial(change_window,question_Frame)) next_question_button.place(x=600,y=600)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/27 05:05
2021/09/27 06:01
2021/09/27 07:42 編集
2021/09/28 13:56
2021/09/29 12:32
2021/09/30 02:03 編集
2021/09/30 04:05 編集
2021/09/30 04:40
2021/09/30 22:42
2021/09/30 22:53
2021/10/04 00:09
2021/10/04 02:27
2021/10/07 11:19