ткинтер питон 3 стоп после цикла - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть цикл после 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...