У меня есть эта ошибка с виджетами tkinter внутри одного из моих классов. То, что я не понимаю, действительно то, что ошибка пытается рассказать мне и где я пошла не так. Здесь ошибка я получаю, когда я бегу код:Python - виджеты tkinter не работают, более того, я не понимаю трассировку, я получаю
File "/usr/lib/python3.5/tkinter/ttk.py", line 553, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File "/usr/lib/python3.5/tkinter/__init__.py", line 2142, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: unknown option "-command"
Вот код:
def play():
while True:
if self.questions_asked == 20:
answer_label = ttk.Label(self , text="That's the end of the quiz. Your score for that round was {}! ")
answer_label.pack()
break
self.random_question = random.randint(0,39)
while not self.random_question in self.questions:
self.random_question = random.randint(0,39)
question_label = ttk.Label(self, text="Question {} : {}".format(i , self.questions[self.random_question]))
question_label.pack()
check_answer = ttk.Button(self, text="Check your answer.", command=lambda:check())
check_answer.pack()
remove_key(self.random_question, self.questions)
remove_key(self.random_question, self.answers)
self.questions_asked +=1
def check():
get_user_entry = entry_box.get()
if get_user_entry == None:
question_label = tkinter.Label(self, text="Please put an answer into the entry box.")
question_label.pack()
if get_user_entry == "end":
question_label = tkinter.Label(self, text="Thanks for playing! ")
question_label.pack()
lambda: shown_frame.show_frame(OpeningFrame)
else:
verify_answer(get_user_entry, self.random_question, self.questions)
if verify_answer == True:
answer_label = ttk.Label(self, text="You got it correct !")
answer_label.pack()
else:
answer_label = ttk.Label(self, text="Sorry the answer was {}".format(self.answers[self.random_question]))
answer_label.pack()
overhead_label = ttk.Label(self, text="Welcome to the Quiz page. Click the button below to start.")
overhead_label.pack()
entry_box = tkinter.Entry(self)
entry_box.pack()
start_quiz = ttk.Button(self, text="Start the quiz.", command=play())
start_quiz.pack()
home_button = ttk.Button(self, text="Go back to home page", command=lambda: shown_frame.show_frame(OpeningFrame))
home_button.pack(pady=15, padx=15)
Когда вы назначаете команду своей кнопке 'start_quiz', назначьте ** вызываемый **' play' вместо того, чтобы называть его ('play()'), когда вы его назначаете. Например: '..., command = play)' – Jkdc
Ваш код не может работать так, как он есть, поэтому я не вижу ошибки. Ни импорт, ни класс, содержащие функцию воспроизведения, отсутствуют. Вы должны опубликовать самый маленький исполняемый код, который вызывает ошибку. –
всегда показывает FULL сообщение об ошибке (Traceback). Вы показываете только часть сообщения, и я не вижу, какая строка в вашем коде создает проблему. Некоторые виджеты не имеют 'command =' - но вы используете 'command =' с этим типом виджета, и это ваше сообщение об ошибке. – furas