Почему команда в кнопке выполняется сразу после запуска?

317 просмотра
0
0 Комментариев

Почему команда в кнопке выполняется сразу после запуска файла, а при нажатии не выполняется?
Т.е когда запускаю файл сразу печатает 1, а при следующих нажатиях ничего не происходит.

import tkinter
root = Tk()
b = Button(root,text = 'кнопка',command = print(1) )
b.pack()
root.mainloop()


Добавить комментарий

1 Ответы

Python Опубликовано 12.12.2018
0

Потому что вы подаете сигнал на выполнении функции print(),
чтобы все работало корректно можете написать так:

import tkinter
root = tkinter.Tk()
b = tkinter.Button(root, text='кнопка', command=lambda: print(1))
b.pack()
root.mainloop()


Или так:

import tkinter
 
 
def func_print():
    print(1)
 
 
root = tkinter.Tk()
b = tkinter.Button(root, text='кнопка', command=func_print)
b.pack()
root.mainloop()


Более правильное объяснения от @jfs
«В выражении: f(g()) сперва вызывается g() функция, а затем её результат передаётся в f функцию. От того что аргумент по имени передаётся (command в данном случае), его вычисление не будет откладываться.«

Spoon добавил комментарий

Не помогает.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up