1
我正在使用PySide編寫一個python程序,我解析一個IP地址的文件並ping它們以查看它們是否啓動並顯示在QTreeWidget中。我遇到的問題是程序在輸出數據之前先ping所有客戶端,導致程序在執行ping操作時「凍結」。如何在不凍結我的程序的情況下ping IP地址並打印輸出?Pyside ping ip列表
我正在使用PySide編寫一個python程序,我解析一個IP地址的文件並ping它們以查看它們是否啓動並顯示在QTreeWidget中。我遇到的問題是程序在輸出數據之前先ping所有客戶端,導致程序在執行ping操作時「凍結」。如何在不凍結我的程序的情況下ping IP地址並打印輸出?Pyside ping ip列表
你可以從QThread
ping你的地址,是這樣的:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore
class PingThread(QtCore.QThread):
addressState = QtCore.pyqtSignal(bool, QtCore.QString)
def __init__ (self):
super(PingThread, self).__init__()
def start(self, addressList):
self.addressList = addressList
super(PingThread, self).start()
def run(self):
for address in self.addressList:
status = True
ping = os.popen('ping -q -c2 {0}'.format(address), 'r')
while True:
line = ping.readline()
if not line:
break
if line.find('100% packet loss') > 0:
status = False
self.addressState.emit(status, address)
你需要像這樣在你的主要部件:
self.pingThread = PingThread()
self.pingThread.addressState.connect(self.on_pingThread_addressState)
self.pingThread.start(myListOfAddresses)
和一個名爲on_pingThread_addressState
插槽,當然。
給我們一些代碼,所以我們可以幫助您解決它 – Vor 2013-03-20 00:52:28