Ren'Py's screen actions triggering when re drawing screens.

In working on the next version of my game i have seemingly created a bug in my game im working on Bob with the way renpy screens work. There is a try on button in the closet that sets the value of a string via the SetVariable action for a button, using a returned string from a function. The problem here is that when you repeatedly click say the discard enabled disabled button which makes it re render the screen its triggering that action(its seems randomly for clothing items try on button). The problem with this is when you fire that function there’s a chance to damage the clothing item, and that is whats happening when the action is seemingly fired upon predicatively evaluating the script. My understanding is that renpy predicatively evaluates the script in order to pre-render screens which is why screens are very specific in what you should or should not do in their code. The thing here is the bug did not exist in 1.4.2 version of my game and i have not changed any code relating to these functions and screens. Also can confirm its the action it self that seems to be the problem as when i comment out the buttons action and the action can’t fire the bug does not occur. Note also i have not changed version of renpy in the sdk so its the same renpy version for 1.4.2 and the current version im working on. Any help with what to do would be great. Is there any way to make renpy stop pre-rendering, so this cannot occur?