class ZeroPositionViewer(QtGui.QWidget): def __init__(self,parent=None): super(ZeroPositionViewer,self).__init__() self.initUI() #self.initXing() #self.initQuery() #self.initTIMER() def initUI(self): self.ui = Ui_Form() self.ui.setupUi(self) self.ui.tableWidget.resizeColumnToContents(1) self.ui.tableWidget.resizeRowsToContents() def initXing(self,XASession=None): if XASession != None: self.XASession = XASession if self.XASession.IsConnected() and self.XASession.GetAccountListCount(): self.accountlist = self.XASession.GetAccountList() return self.XASession = px.XASession() myform = LoginForm(self,proxy(self.XASession)) myform.show() myform.exec_() if self.XASession.IsConnected() and self.XASession.GetAccountListCount(): self.accountlist = self.XASession.GetAccountList() print self.accountlist def initQuery(self): if self.XASession.IsConnected() and self.XASession.GetAccountListCount(): nowtime = time.localtime() if nowtime.tm_hour >= 6 and nowtime.tm_hour < 16: self.exchange = 'KRX' self.NewQuery = px.XAQuery_t0441() obs = observer_t0441() self.NewQuery.observer = obs self.NewQuery.SetFieldData('t0441InBlock','accno',0,self.accountlist[0]) self.NewQuery.SetFieldData('t0441InBlock','passwd',0,'0302') else: self.exchange = 'EUREX' self.NewQuery = px.XAQuery_CEXAQ31200() obs = observer_CEXAQ31200() self.NewQuery.observer = obs self.NewQuery.SetFieldData('CEXAQ31200InBlock1','RecCnt',0,1) self.NewQuery.SetFieldData('CEXAQ31200InBlock1','AcntNo',0,self.accountlist[0]) self.NewQuery.SetFieldData('CEXAQ31200InBlock1','InptPwd',0,'0302') self.NewQuery.SetFieldData('CEXAQ31200InBlock1','BalEvalTp',0,'1') self.NewQuery.SetFieldData('CEXAQ31200InBlock1','FutsPrcEvalTp',0,'1') def initTIMER(self): if self.XASession.IsConnected() and self.XASession.GetAccountListCount(): self.ctimer = QtCore.QTimer() self.ctimer.timeout.connect(self.onTimer) self.ctimer.start(5000) def onTimer(self): if self.XASession.IsConnected() and self.XASession.GetAccountListCount(): self.NewQuery.flag = True ret = self.NewQuery.Request(False) while self.NewQuery.flag: pythoncom.PumpWaitingMessages() self.onReceiveData(self.exchange,self.NewQuery.data) def onReceiveData(self,exchange,data): if exchange == 'KRX': self.ui.tableWidget.setRowCount(len(data)-1) self.ui.tableWidget.resizeRowsToContents() for i in xrange(1,len(data)): shcode = data[i]['expcode'] if data[i]['medocd'] == '1': pos = u'-' + data[i]['jqty'] elif data[i]['medocd'] == '2': pos = data[i]['jqty'] else: pos = '' pnl = data[i]['dtsunik1'] avgprc = '%.5s'%data[i]['pamt'] self.updateTableWidgetItem(i-1,0,shcode) self.updateTableWidgetItem(i-1,1,pos) self.updateTableWidgetItem(i-1,6,pnl) self.updateTableWidgetItem(i-1,7,avgprc) elif exchange == 'EUREX': self.ui.tableWidget.setRowCount(len(data)-2) self.ui.tableWidget.resizeRowsToContents() for i in xrange(2,len(data)): shcode = data[i]['FnoIsuNo'] if data[i]['BnsTpCode'] == '1': pos = u'-' + data[i]['UnsttQty'] elif data[i]['BnsTpCode'] == '2': pos = data[i]['UnsttQty'] pnl = data[i]['EvalPnl'] avgprc = '%.5s'%data[i]['FnoAvrPrc'] self.updateTableWidgetItem(i-2,0,shcode) self.updateTableWidgetItem(i-2,1,pos) self.updateTableWidgetItem(i-2,6,pnl) self.updateTableWidgetItem(i-2,7,avgprc) def updateTableWidgetItem(self,row,col,text): widgetItem = self.ui.tableWidget.item(row,col) if not widgetItem: NewItem = QtGui.QTableWidgetItem(text) #if col in self.alignRightColumnList: NewItem.setTextAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) self.ui.tableWidget.setItem(row,col,NewItem) else: widgetItem.setText(text) pass