2
간단한 채팅 프로그램의 경우 boost :: python으로 감싸 인 c lib를 사용합니다.QThread 블록 차단 GUI
간단한 GUI는 PyQT를 사용하여 작성되었습니다. 메시지 수신은 lib에 대한 차단 호출을 통해 수행됩니다. GUI가 독립적으로 새로 고치려면 통신 부분이 QThread에 있습니다. 내가 GUI와 독립 될 수있는 통신을 가정 것이지만
의 GUI는 매우 응답하지 않고 메시지 만에 오는 경우 업데이트 할 것 같다.이 악명 높은 글로벌 통역 잠금에 의해 발생할 수 있습니다
#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import pynetcom2
import time
class NetCom(QThread):
def __init__(self):
QThread.__init__(self)
self.client = pynetcom2.Client()
self.client.init('127.0.0.1', 4028)
self.client.provide('myChat', 1)
self.client.subscribe('myChat', 100)
def run(self):
while (1):
print "Waiting for message..."
text = self.client.recvStr('myChat', True)
return
class Netchat(QMainWindow):
def __init__(self, argv):
if (len(argv) != 2):
print "Usage: %s <nickname>" %(argv[0])
sys.exit(1)
self.nickname = argv[1]
print "Logging in with nickname '%s'" %(self.nickname)
super(Netchat, self).__init__()
self.setupUI()
rect = QApplication.desktop().availableGeometry()
self.resize(int(rect.width() * 0.3), int(rect.height() * 0.6))
self.show()
self.com = NetCom()
self.com.start()
def setupUI(self):
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.testList = QListWidget()
mainLayout = QHBoxLayout()
mainLayout.addWidget(self.testList)
centralWidget.setLayout(mainLayout)
if __name__ == "__main__":
app = QApplication(sys.argv)
netchat = Netchat(sys.argv)
app.exec_()
을 :
그것은 당신의 C 확장에 다음과 같은 매크로를 사용하여 아래로 비등! – joekr