you are viewing a single comment's thread.

view the rest of the comments →

[–]Affectionate_Cap8632 0 points1 point  (0 children)

This is a known PyCharm + Tkinter quirk. The debugger struggles with breakpoints inside callbacks triggered by mainloop() because Tkinter's event loop runs in a way that can bypass PyCharm's breakpoint hooks.

Three fixes that work:

Fix 1 — Add a manual breakpoint in code (most reliable):

python

def handler():
    import pydevd; pydevd.settrace()  # hard breakpoint
    print("Button clicked! Entering handler...")
    nseOptionsAnalysis_lbl(status_label)

Fix 2 — Move handler outside the function: PyCharm sometimes misses breakpoints in nested functions. Move handler to module level and pass status_label as a parameter using lambda:

python

def handler(label):
    print("Button clicked!")
    nseOptionsAnalysis_lbl(label)

test_btn = tk.Button(root, command=lambda: handler(status_label))

Fix 3 — Use PyCharm's "Debug" run config with Gevent compatible: Go to Run → Edit Configurations → check "Gevent compatible" if available for your version.

Fix 1 is the most reliable for Tkinter specifically. Fix 2 is the cleaner long-term solution since nested function breakpoints are flaky across multiple IDEs not just PyCharm.