Python Forum
tkinter button not accessing the command when clicked - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: tkinter button not accessing the command when clicked (/thread-22703.html)



tkinter button not accessing the command when clicked - jhf2 - Nov-23-2019

I am making a tkinter program where I want one button (button1) always on the screen. Every time that button is clicked I want a new button (button2) to form in a different area of the screen, each time the first button (button1) is clicked a new button (button2) should appear 30 pixels below the previous one. To do this I am using a counter. Where I am having an issue is when any one of the new buttons (button2) are clicked, I want the counter to reset. In other words, now when button1 is clicked, button2 should appear in the original spot again because the counter is 0 again. For some reason though my counter is never reseting and the new buttons (button2) just keep appearing lower than the last even after one of them is clicked. Please help thank you!

My code looks something like this:

from tkinter import *

window = Tk()

counter = 0
def resetCounter(counter):
   counter = 0

def button1Clicked():
   global counter
   button2 = Button(window, text="click me when ready", command(resetCounter(counter)))
   button2.place(x=50, y=(100 + (counter*30))
   counter += 1

button1 = Button(window, text="click me" command(button1Clicked))
button1.place(x=0, y=0)

window.mainloop()



RE: tkinter button not accessing the command when clicked - DT2000 - Nov-23-2019

I have corrected your code so it will run but I am not sure what it is exactly that you are trying to do.

As I currently have it running the window opens with the "Click Me" button showing in the upper right corner "x=0,y=0", as you have it preset. When button1 is clicked the new button (button2), displays at "x=50, y=100" while button1 remains in the window.

When button2 is clicked the code then executes "resetCounter(counter)" which then assigns the value of "0" to the variable.

So as I see the code running it is performing what you are stating, or am I missing what you are trying to do here?

from tkinter import *

window = Tk()

counter = 0
def resetCounter(counter):
   counter = 0

def button1Clicked():
   global counter
   button2 = Button(window, text="click me when ready", command = resetCounter(counter))
   button2.place(x=50, y=100), + (counter*30)
   counter += 1

button1 = Button(window, text='Click Me', command = button1Clicked)
button1.place(x=0,y=0)

window.mainloop()