У меня есть цикл после tkinter
для каждых 10 секунд для метода Main, который проверяет, отвечают ли указанные серверы обратно на эхо-запрос.Если они этого не делают, он проверяет еще раз через 60 секунд, и если он все еще находится в автономном режиме, выполняется оператор while, который подает звуковой сигнал до тех пор, пока не завершится, что занимает почти 120 секунд, но во время этого метод уже повторяется, и я создал кнопку, которая останавливает звуковой сигналв промежутке между этими 120 секундами, но я хочу, чтобы он тоже мог его остановить.Я пробовал много вещей, но они, кажется, не работают, поэтому любая помощь будет оценена.
import datetime
import time
import socket
from playsound import playsound
from tkinter import *
import os
ipAddress = ["google.com", "yahoo.com", "youtube.com", "bing.com"]
serverName = ["Server 1", "Server 2", "Server 3", "Server 4"]
sN = 0;
status = False;
clear = lambda: os.system('cls')
window = Tk()
window.title("Ping Server")
window.geometry('500x400')
def after(self, ms, func=None, *args):
Main()
def stopBeep():
global stopB
stopB = True
def checkServer():
global ipAddress
global serverName
global sN
global status
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((ipAddress[sN],9339))
if result == 0:
status = True
else:
status = False
def Main():
clear()
global stopB
global ipAddress
global serverName
global sN
global status
global statusText
global statustextAgain
stopB = False
localtime = datetime.datetime.now()
while sN < 4:
checkServer()
if status == True:
lbl = Label(window, text="Online", font=("Nexa", 10), fg="green")
lbl.grid(column=1, row=sN+1)
print ("Online")
else:
lbl = Label(window, text="Offline", font=("Nexa", 10), fg="red")
lbl.grid(column=1, row=sN+1)
#time.sleep(60)
checkServer()
if status == True:
lbl = Label(window, text="Online", font=("Nexa", 10), fg="green")
lbl.grid(column=1, row=sN+1)
else:
lbl = Label(window, text="Offline", font=("Nexa", 10), fg="red")
lbl.grid(column=1, row=sN+1)
i = 0
while stopB == true:
playsound('alert.mp3')
i += 1
sN += 1
time.sleep(1)
timetoshow = Label(window, text=localtime.strftime("%I:%M:%S %p"), font=( 10))
timetoshow.grid(column=0, row=6)
window.after(10000, Main)
lbl = Label(window, text="Ping Servers", font=("Nexa Bold", 20))
lbl.grid(column=0, row=0)
lbl1 = Label(window, text="Server 1:", font=("Nexa Bold", 10))
lbl1.grid(column=0, row=1)
lbl3 = Label(window, text="Server 2:", font=("Nexa Bold", 10))
lbl3.grid(column=0, row=2)
lbl5 = Label(window, text="Server 3:", font=("Nexa Bold", 10))
lbl5.grid(column=0, row=3)
lbl7 = Label(window, text="Server 4:", font=("Nexa Bold", 10))
lbl7.grid(column=0, row=4)
btn = Button(window, text="Stop Beep", command=stopBeep)
btn.grid(column=0, row=5)
window.after(10000, Main)
window.mainloop()