我想ping我的網絡中的每秒鐘一個特定的主機名並更改相應按鈕的名稱。 現在我有這樣的:Ping每秒鐘和Tkinter按鈕
import tkinter as tk
import time
# variables
hostname = ("ASUS-PC")
mot= "inactif"
class test(tk.Tk):
# make buttons on grid
def __init__(self):
tk.Tk.__init__(self)
self.button = list()
for i in range(10):
i=i+1
RN = ('RN '+str(i))
self.button.append(tk.Button(text=RN))
self.button[-1].grid(row=0,column=i)
# ping hostname every second
def ping(self):
import subprocess
import os
result=subprocess.Popen(["ping", "-n", "1", "-w", "200", hostname],shell=True).wait()
if result == 0:
print (hostname, "active")
else:
B = self.button[0]
B ['text'] = mot
time.sleep(1)
while True:
ping()
app = test()
app.mainloop()
它不工作,我不知道爲什麼。在開始這是一個「自我」的問題,但現在它似乎是關係到我如何PING每一秒(我把它從那裏What is the best way to repeatedly execute a function every x seconds in Python?)如果有人知道答案......
感謝您的幫助
變量'button'在引用時超出了範圍。相關:http://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules – Monkpit
你的意思是讓'self.button'(注意你甚至在'ping'缺少適當的參數')?功能中的局部變量不能從外部訪問,**故意**。 – jonrsharpe