Decoupling is the goal, not purity of any pattern. One test tells you whether you got there: can your logic run with no UI loaded at all?
If the model file imports and works in a plain Python REPL, with no windows and no widgets, you are already there. If it does not, something that should be a detail has quietly become a dependency.
The test is also a relief. You can stop picturing a signal on every widget and ask a smaller question: do I need continuous sync, or just a clean read at the moment I act? A single form driving a calculation rarely needs the first.
The less your logic knows about the screen, the more freely the screen can change.
Kay
P.S. Read how services and workers keep your logic separate from everything that waits on a screen or a click. https://systemthinkinglab.ai/learn/building-blocks/services-workers/