все. Я новичок в Python и пытаюсь освоить его, так как моя будущая работа потребует от меня его знания. Я играю с Tkinter, пытаясь заставить работать сценарий проверки связи. Результат этого сценария покажет список серверов в столбце 0 и список того, работает ли он в столбце 1. Работает ли он или нет. У меня он работает, за исключением одной вещи: виджеты перекрываются, что приводит к тому, что этот сценарий вызывает переполнение памяти. Например, если сайт «google.com» отвечает «ВВЕРХ» и я отключаю свой интернет, он будет отображаться как «ВНИЗ». Тем не менее, как только мой интернет снова подключится, он будет отображаться как «ВВЕРХ», но я вижу остатки слова «ВНИЗ» за ярлыком. Я пробовал разные способы уничтожить виджет перед каждым использованием, но не могу заставить его работать. Я понимаю, если мой код немного грязный, поэтому я определенно открыт для критики. Ниже приведен код с несколькими примерами сайтов, перечисленных в переменной host:
import pyping
import Tkinter as tk
from Tkinter import *
import time
host = ["google.com", "yahoo.com", "espn.com"]
root = tk.Tk()
class PingTest:
result = []
resultfc = []
def __init__(self, hostname, inc):
self.hostname = hostname
self.inc = inc
self.ping(hostname)
def results(self, result1, resultfc1):
self.result = result1
self.resultfc = resultfc1
def ping(self, y):
self.y = y
q = ""
try:
x = pyping.ping(self.y, count=1)
q = x.ret_code
except Exception:
pass
finally:
if q == 0:
self.results("UP", "green")
else:
self.results("DOWN", "red")
self.window()
def window(self):
self.label1 = Label(root, text=self.hostname)
self.label2 = Label(root, text=self.result, fg=self.resultfc, bg="black")
a = Label(root, text=self.hostname)
b = Label(root, text=self.result, fg=self.resultfc, bg="black")
b.update()
b.update_idletasks()
if b == TRUE:
b.grid_forget() # These two lines don't seem to help my cause
b.destroy()
a.grid(row=self.inc, column=0)
b.grid(row=self.inc, column=1)
while TRUE:
i = 0
for h in host:
PingTest(h, i)
i += 1
time.sleep(1)