MCPcopy
hub / github.com/PyQt5/PyQt / run_ping

Method run_ping

QProcess/GetCmdResult.py:45–78  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

43 self._pingProcess = None
44
45 def run_ping(self):
46 sender = self.sender() # 同步或者异步按钮
47 self.buttonRunSync.setEnabled(False)
48 self.buttonRunASync.setEnabled(False)
49
50 if self._pingProcess:
51 self._pingProcess.terminate()
52
53 self._pingProcess = QProcess(self)
54 self._pingProcess.setProgram('ping')
55 if sys.platform.startswith('win'):
56 self._pingProcess.setArguments(['-n', '5', 'www.baidu.com'])
57 self._pingProcess.setArguments(['-n', '5', 'www.baidu.com'])
58 elif sys.platform.startswith('darwin') or sys.platform.startswith(
59 'linux'):
60 self._pingProcess.setArguments(['-c', '5', 'www.baidu.com'])
61 # 合并输出流和错误流,执行完毕后通过readAll可以一次性读取所有结果
62 self._pingProcess.setProcessChannelMode(QProcess.MergedChannels)
63 self._pingProcess.started.connect(self.on_started)
64
65 if sender == self.buttonRunASync:
66 # 异步执行
67 self._pingProcess.finished.connect(self.on_finished)
68 self._pingProcess.errorOccurred.connect(self.on_error)
69 self._pingProcess.start()
70 elif sender == self.buttonRunSync:
71 # 同步执行
72 self._pingProcess.start()
73 if self._pingProcess.waitForFinished():
74 self.on_finished(self._pingProcess.exitCode(),
75 self._pingProcess.exitStatus())
76 else:
77 self.resultView.append('ping process read timeout')
78 self.on_error(self._pingProcess.error())
79
80 def on_started(self):
81 self.resultView.append('ping process started')

Callers

nothing calls this directly

Calls 4

on_finishedMethod · 0.95
on_errorMethod · 0.95
errorMethod · 0.80
startMethod · 0.45

Tested by

no test coverage detected