Как динамично создавать кнопки?
Проще  простого, вот мой ответ на аналогичный вопрос.
Кнопка добавляется вызовом определённого метода. Параметры метода могут быть не константами, а переменными. В Питоне есть циклы.

Вот и всё. Выбираешь список показываемых продуктов, делаешь цикл по результатам, для каждого генерируешь кнопку, подставив сведения о продукте вместо текста кнопки.

Единственный вопрос, как различить, какая кнопка была нажата. Тут уже зависит от библиотеки.