Сделайте кнопку tkinter, которая вызывает функцию под ней

#python #tkinter

Вопрос:

Я работаю над сценарием, который отправит вам сообщение, когда товар будет в наличии, и я хочу, чтобы он запускался при нажатии кнопки «Пуск». Как бы то ни было, функция, которая должна запускаться, находится ниже кнопки «Пуск», вот мой код.

 import tkinter as tk
from tkinter import filedialog, Text
import os
import requests
import twilio
from bs4 import BeautifulSoup
import time
from lxml import html
import os
from twilio.rest import  Client



root = tk.Tk()


canvas = tk.Canvas(root, height=700, width=700, bg='#263D42')
canvas.pack()




productlink = tk.Entry (root)
canvas.create_window(200, 140, window=productlink)

phonenmbr = tk.Entry(root)
canvas.create_window(500, 140, window=phonenmbr)

productUrl = tk.Label(root, text='Enter Product Url')

productUrl.config(font=('bebas-neue', 14))
canvas.create_window(200, 110, window=productUrl)

phonenumbertext = tk.Label(root, text='Enter Phone Number')

phonenumbertext.config(font=('bebas-neue', 14))
canvas.create_window(500, 110, window=phonenumbertext)

start = tk.Button(root, text='Start Bot', padx=10, pady=5, fg='White', bg='#1E1513', command=stockCheck())
canvas.create_window(350, 150, window=start)

root.mainloop()

account_sid = 'sid'
auth_token =  'auth_token'
client = Client(account_sid, auth_token)


headers = {"User-Agent": 'Mozilla/5.0 (X11; Linux x86_64)', 'Cache-Control': 'no-cache', "Pragma": "no-cache"}
page = requests.get(productlink, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')

def stockCheck():
    while True:
        if soup.find(id='outOfStock'):
                time.sleep(1)
        else:
            publish()
            break

def publish():
    message = client.messages 
                    .create(
                        body="The Product: "   productlink   " Is in Stock BUY IT NOW",
                        from_=' 14804057767',
                        to= phonenmbr
                    )
 

функция проверки запасов находится ниже кнопки «Пуск», и их трудно перемещать из-за всего остального. Какая-нибудь помощь?

Комментарии:

1. Во-первых, command=stockCheck() будет выполняться stockCheck() немедленно, но это не определено. Используйте command=lambda: stockCheck() , если это будет определено позже. Во-вторых, код, лежащий root.mainloop() в основе, не будет интерпретироваться до тех пор, пока корневое окно не будет уничтожено. Поэтому вам нужно изменить логику вашего кода.

2. кроме того, если вы не планируете передавать какие-либо аргументы, которые вы могли бы просто использовать command=func без скобок, где func находится функция, которую вы хотите вызвать, нажмите кнопку, где также вы должны определить func перед этим, поэтому посмотрите выше