1
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 を送信して結果を返すコードを書いています。TextCLI では正常に動作しますが、 Tkinter を使用してウィジェットに「印刷」したいと考えています。ウィジェット GUIに送信するところまでText来ましたが、プログラムを中断した後にしか表示されません。ping がループを進むにつれて、GUI テキスト領域にローリング出力が必要です。

4

1 に答える 1