Кнопка Python Tkinter

    refreshButton = Button(frameList, text ="Refresh",command = print("pressed"))
    refreshButton.place(x=50, y=50)

Почему этот код не выводится "нажата" при каждом нажатии кнопки, а только один раз при ее создании?

Там нет сообщений об ошибках. проблема в том, что print("нажата") не выполняется.

2 ответа

Использование lambda:

refreshButton = Button(frameList,
    text ="Refresh",
    command = lambda: print("pressed")
  )

Команда кнопки не может дать никаких параметров, если вы не используете lambda или какая-то другая функция. Вместо этого вам нужно сделать свою собственную функцию для вызова при нажатии кнопки.

def Refresh(*args):
    print("pressed")
    # do stuff

refreshButton = Button(frameList, text ="Refresh",command = Refresh)
refreshButton.place(x=50, y=50)

Если все, что вы хотите сделать, это print("pressed") тогда это альтернативное решение. lambda поймает любые параметры, заданные кнопкой, и позволит вам вызвать функцию со своими параметрами:)

refreshButton = Button(frameList, text ="Refresh",command= lambda *args: print("pressed"))
Другие вопросы по тегам