MCPcopy Create free account
hub / github.com/PyQt5/PyQtClient / QSingleApplication

Class QSingleApplication

Utils/Application.py:17–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15
16
17class QSingleApplication(QApplication):
18
19 messageReceived = pyqtSignal(str)
20
21 def __init__(self, name, *args, **kwargs):
22 super(QSingleApplication, self).__init__(*args, **kwargs)
23 self._socketName = name
24 self._activationWindow = None
25 self._socketServer = None
26 self._socketIn = None
27 self._socketOut = None
28 self._running = False
29
30 # 先尝试连接
31 self._socketOut = QLocalSocket(self)
32 self._socketOut.connectToServer(self._socketName)
33 self._socketOut.error.connect(self.handleError)
34 self._running = self._socketOut.waitForConnected()
35
36 if not self._running: # 程序未运行
37 self._socketOut.close()
38 del self._socketOut
39 # 创建本地server
40 self._socketServer = QLocalServer(self)
41 self._socketServer.listen(self._socketName)
42 self._socketServer.newConnection.connect(self._onNewConnection)
43 self.aboutToQuit.connect(self.removeServer)
44
45 def handleError(self, message):
46 print("handleError message: ", message)
47
48 def isRunning(self):
49 return self._running
50
51 def activationWindow(self):
52 return self._activationWindow
53
54 def setActivationWindow(self, activationWindow):
55 # 设置需要激活的窗口
56 self._activationWindow = activationWindow
57
58 def activateWindow(self):
59 try:
60 self._activationWindow.setWindowState(
61 self._activationWindow.windowState() & ~Qt.WindowMinimized)
62 # self._activationWindow.raise_()
63 self._activationWindow.showNormal()
64 self._activationWindow.activateWindow()
65 except Exception as e:
66 print(e)
67
68 def sendMessage(self, message, msecs=5000):
69 if not self._socketOut:
70 return False
71 if not isinstance(message, bytes):
72 message = str(message).encode()
73 self._socketOut.write(message)
74 if not self._socketOut.waitForBytesWritten(msecs):

Callers 1

mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected