import subprocess
import os
import time
from tkinter import *
root=Tk()
textbox=Text(root)
textbox.pack()
def redirector(inputStr):
textbox.insert(INSERT, inputStr)
def address_ping():
'''
DOCSTRING -> Ip addresses in servers.txt are
192.168.0.1 192.168.0.26
'''
while True:
with open('servers.txt', 'r') as f:
for ip in f:
result=subprocess.Popen(["ping", "-c", "7", "-n", "-W", "2", ip],stdout=f, stderr=f).wait()
if result:
print("ip address " + ip, "is inactive")
sys.stdout.write = redirector
else:
print("ip address " + ip, "is active")
sys.stdout.write = redirector
pass
address_ping()
root.mainloop()
ここでは、IP アドレスに ping を送信して結果を返すコードを書いています。Text
CLI では正常に動作しますが、 Tkinter を使用してウィジェットに「印刷」したいと考えています。ウィジェット GUIに送信するところまでText
来ましたが、プログラムを中断した後にしか表示されません。ping がループを進むにつれて、GUI テキスト領域にローリング出力が必要です。