0

以下は私のコードです。質問が回答された場合、別の質問を開始することはできません。

アプリが尋ねる質問のリストがありますが、それらすべてをここに投稿しても意味がありません。質問を続ける方法がわかりません。

from tkinter import *
from random import randint
from tkinter import ttk


def correct():
    vastus = ('correct')
    messagebox.showinfo(message=vastus)   



def first():
    box = Tk()
    box.title('First question')
    box.geometry("300x300")

    silt = ttk.Label(box, text="Question")
    silt.place(x=5, y=5)

    answer = ttk.Button(box, text="Answer 1", command=correct)
    answer.place(x=10, y=30, width=150,)


    answer = ttk.Button(box, text="Answer 2",command=box.destroy)
    answer.place(x=10, y=60, width=150)


    answer = ttk.Button(box, text="Answer 3", command=box.destroy)
    answer.place(x=10, y=90, width=150)



first()
4

2 に答える 2

1

私の知る限り、あなたの質問は非常に漠然としています。

tkMessageBox.showinfo()

あなたが探しているものは何ですか?

于 2012-11-12T11:31:00.243 に答える
0

正しい関数内から次の質問を実行するか、QA ダイアログをもう少し抽象化して、より柔軟にすることができます。少し退屈だったので、動的な数の質問をサポートするものを作成しました (ただし、現在は 3 つの回答しかありません)。

from tkinter import ttk
import tkinter
import tkinter.messagebox

class Question:
    def __init__ (self, question, answers, correctIndex=0):
        self.question = question
        self.answers = answers
        self.correct = correctIndex

class QuestionApplication (tkinter.Frame):
    def __init__ (self, master=None):
        super().__init__(master)
        self.pack()

        self.question = ttk.Label(self)
        self.question.pack(side='top')

        self.answers = []
        for i in range(3):
            answer = ttk.Button(self)
            answer.pack(side='top')
            self.answers.append(answer)

    def askQuestion (self, question, callback=None):
        self.callback = callback
        self.question['text'] = question.question

        for i, a in enumerate(question.answers):
            self.answers[i]['text'] = a
            self.answers[i]['command'] = self.correct if i == question.correct else self.wrong

    def correct (self):
        tkinter.messagebox.showinfo(message="Correct")
        if self.callback:
            self.callback()

    def wrong (self):
        if self.callback:
            self.callback()

# configure questions
questions = []
questions.append(Question('Question 1?', ('Correct answer 1', 'Wrong answer 2', 'Wrong answer 3')))
questions.append(Question('Question 2?', ('Wrong answer 1', 'Correct answer 2', 'Wrong answer 3'), 1))

# initialize and start application loop
app = QuestionApplication(master=tkinter.Tk())
def askNext ():
    if len(questions) > 0:
        q = questions.pop(0)
        app.askQuestion(q, askNext)
    else:
        app.master.destroy()

askNext()
app.mainloop()
于 2012-11-12T12:28:47.320 に答える