#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
перед этим, поэтому посмотрите выше