On 2023-01-10 14:57, Abhay Singh wrote:
Here is the entire code snippet of the same.
Please help
def change_flag(top_frame, bottom_frame, button1, button2, button3, button4,
controller): global counter, canvas, my_image, chosen, flag, directory
canvas.delete('all') button5['state'] = DISABLED counter += 1
chosen, options_text = function_options()
right_answer_flag = get_right_answer_flag(chosen, options_text)
#pdb.set_trace()
try:
location = directory + chosen + format_image
except:
controller.show_frame(PlayAgainExit)
my_image = PhotoImage(file=location)
canvas.create_image(160, 100, anchor=CENTER, image=my_image)
button1["text"] = options_text[0]
button2["text"] = options_text[1]
button3["text"] = options_text[2]
button4["text"] = options_text[3]
button1['state'] = NORMAL
button2['state'] = NORMAL
button3['state'] = NORMAL
button4['state'] = NORMAL
##############
button5 = Button(
next_frame,
width=20,
text="next",
fg="black",
#command=lambda:
change_flag(top_frame,bottom_frame,button1,button2,button3,button4,controller))
command=Thread(target=change_flag, args
=(top_frame,bottom_frame,button1,button2,button3,button4,controller)).start)
button5.pack(side=RIGHT, padx=5, pady=5)
The formatting is messed up, which doesn't help.
Some points:
You have a 'bare' except, i.e. "except:". Don't do that. It swallows
_all_ exceptions and can hide bugs.
I don't like how you're passing Thread...start as an argument. IMHO, it
would be better/cleaner to pass a plain function, even if the only thing
that function does is to start the thread.
I can't tell what 'change_flag' is doing because of the formatting
issue. Is it doing GUI stuff? In a thread? If yes, don't do that. The
GUI doesn't like that. Only the main thread should do GUI stuff.
--
https://mail.python.org/mailman/listinfo/python-list