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

Reply via email to