def update_table(self, emuchunks):
'''
This function updates the table with new code objects received from the packager
at the end of a "ripping" process.
'''
if (not self.qtAvailable):
return
self._table.setRowCount(len(emuchunks))
self._table.emuchunks = emuchunks
row = 0
for chunkName in emuchunks:
nameField = QtWidgets.QTableWidgetItem(chunkName)
nameField.setFlags(Qt.ItemIsEnabled)
startAddr = QtWidgets.QTableWidgetItem('0x%.8x' % emuchunks[chunkName].startaddr)
startAddr.setFlags(Qt.ItemIsEnabled)
endAddr = QtWidgets.QTableWidgetItem('0x%.8x' % (int(emuchunks[chunkName].startaddr) + int(emuchunks[chunkName].codelen)))
endAddr.setFlags(Qt.ItemIsEnabled)
self._table.setItem(row, 0, nameField)
self._table.setItem(row, 1, startAddr)
self._table.setItem(row, 2, endAddr)
row += 1
self._core.show()
self._core.selectTab(self)
self.show()
### Convenience wrappers for some frequently used things
python类QTableWidgetItem()的实例源码
def updateTalentRow(self):
for i in range(self.uiFert.tableWidget.rowCount()):
fert = self.uiFert.tableWidget.item(i,0).text()
#self.uiFert.tableWidget.setItem(i,2,QtWidgets.QTableWidgetItem(str(len(Wolke.Char.fertigkeiten[fert].gekaufteTalente))))
self.labelRef[fert].setText(str(len(Wolke.Char.fertigkeiten[fert].gekaufteTalente)))
def updateTalentRow(self):
for i in range(self.uiFert.tableWidget.rowCount()):
fert = self.uiFert.tableWidget.item(i,0).text()
#self.uiFert.tableWidget.setItem(i,2,QtWidgets.QTableWidgetItem(str(len(Wolke.Char.übernatürlicheFertigkeiten[fert].gekaufteTalente))))
self.labelRef[fert].setText(str(len(Wolke.Char.übernatürlicheFertigkeiten[fert].gekaufteTalente)))
def add_row(self,pos,name,top_btm,active,start,width,depth,voltage):
pos= tab_insert_row(self.tab)
self.tab.blockSignals(True)
self.tab.setItem(pos,0,QTableWidgetItem(name))
combobox = QComboBoxLang()
combobox.addItemLang("top",_("top"))
combobox.addItemLang("bottom",_("bottom"))
self.tab.setCellWidget(pos,1, combobox)
combobox.setValue_using_english(top_btm.lower())
#combobox.setCurrentIndex(combobox.findText(top_btm.lower()))
combobox.currentIndexChanged.connect(self.save)
combobox = QComboBoxLang()
combobox.addItemLang("true",_("true"))
combobox.addItemLang("false",_("false"))
self.tab.setCellWidget(pos,2, combobox)
combobox.setValue_using_english(active.lower()) #setCurrentIndex(combobox.findText(active.lower()))
combobox.currentIndexChanged.connect(self.save)
self.tab.setItem(pos,3,QTableWidgetItem(start))
self.tab.setItem(pos,4,QTableWidgetItem(width))
self.tab.setItem(pos,5,QTableWidgetItem(depth))
self.tab.setItem(pos,6,QTableWidgetItem(voltage))
self.tab.blockSignals(False)
def insert_row_mm(self,i,file_name,token,path,function,max_value,min_value,error):
self.tab_mm.blockSignals(True)
self.tab_mm.insertRow(i)
item = QTableWidgetItem(file_name)
self.tab_mm.setItem(i,0,item)
item = QTableWidgetItem(token)
self.tab_mm.setItem(i,1,item)
self.item = gpvdm_select()
self.item.setText(path)
self.item.button.clicked.connect(self.callback_show_list_src)
self.tab_mm.setCellWidget(i,2,self.item)
item = QTableWidgetItem(function)
self.tab_mm.setItem(i,3,item)
item = QTableWidgetItem(max_value)
self.tab_mm.setItem(i,4,item)
item = QTableWidgetItem(min_value)
self.tab_mm.setItem(i,5,item)
item = QTableWidgetItem(error)
self.tab_mm.setItem(i,6,item)
self.tab_mm.blockSignals(False)
def insert_row_math(self,i,file_a,token_a,path_a,file_b,token_b,path_b,equation):
self.tab_math.blockSignals(True)
self.tab_math.insertRow(i)
item = QTableWidgetItem(file_a)
self.tab_math.setItem(i,0,item)
item = QTableWidgetItem(token_a)
self.tab_math.setItem(i,1,item)
self.item = gpvdm_select()
self.item.setText(path_a)
self.item.button.clicked.connect(self.callback_show_list_equation_a)
self.tab_math.setCellWidget(i,2,self.item)
item = QTableWidgetItem(file_b)
self.tab_math.setItem(i,3,item)
item = QTableWidgetItem(token_b)
self.tab_math.setItem(i,4,item)
self.item = gpvdm_select()
self.item.setText(path_b)
self.item.button.clicked.connect(self.callback_show_list_equation_b)
self.tab_math.setCellWidget(i,5,self.item)
item = QTableWidgetItem(equation)
self.tab_math.setItem(i,6,item)
self.tab_math.blockSignals(False)
def insert_row(self,i,enabled,src_file,src_token,src_path,dest_file,dest_token,dest_path):
self.tab.blockSignals(True)
self.tab.insertRow(i)
item = gtkswitch()
item.set_value(str2bool(enabled))
item.changed.connect(self.tab_changed)
self.tab.setCellWidget(i,0,item)
item = QTableWidgetItem(src_file)
self.tab.setItem(i,1,item)
item = QTableWidgetItem(src_token)
self.tab.setItem(i,2,item)
self.item = gpvdm_select()
self.item.setText(src_path)
self.item.button.clicked.connect(self.callback_show_list_src)
self.tab.setCellWidget(i,3,self.item)
item = QTableWidgetItem(dest_file)
self.tab.setItem(i,4,item)
item = QTableWidgetItem(dest_token)
self.tab.setItem(i,5,item)
self.item = gpvdm_select()
self.item.setText(dest_path)
self.item.button.clicked.connect(self.callback_show_list_dest)
self.tab.setCellWidget(i,6,self.item)
self.tab.blockSignals(False)
def set_automated_stocks(self):
file_list = ["../data/sell_list.txt", "../data/buy_list.txt"]
automated_stocks = []
try:
for file in file_list:
# utf-8? ??? ???
# cp949 ???? ????? encoding ??
with open(file, 'rt', encoding='utf-8') as f:
stocks_list = f.readlines()
automated_stocks += stocks_list
except Exception as e:
print(e)
e.msg = "set_automated_stocks() ??"
self.show_dialog('Critical', e)
return
# ??? ?? ??
cnt = len(automated_stocks)
self.automatedStocksTable.setRowCount(cnt)
# ???? ??
for i in range(cnt):
stocks = automated_stocks[i].split(';')
for j in range(len(stocks)):
if j == 1:
name = self.kiwoom.get_master_code_name(stocks[j].rstrip())
item = QTableWidgetItem(name)
else:
item = QTableWidgetItem(stocks[j].rstrip())
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignCenter)
self.automatedStocksTable.setItem(i, j, item)
self.automatedStocksTable.resizeRowsToContents()
def set_table_widget(self):
header_text_list = ['case_id', 'case??', '??id', '????', '????', '????']
row_count = len(self.task_records) if self.task_records else 0
column_count = len(header_text_list)
self.report_table_widget.setColumnCount(column_count)
self.report_table_widget.setRowCount(row_count)
self.report_table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.report_table_widget.horizontalHeader().setStyleSheet("QHeaderView::section{background: #ECF5FF;}")
for column in range(0, self.report_table_widget.columnCount()):
table_header_item = QTableWidgetItem(header_text_list[column])
table_header_item.setFont(QFont("Roman times", 12, QFont.Bold))
self.report_table_widget.setHorizontalHeaderItem(column, table_header_item)
if self.task_records:
for i, report in enumerate(self.task_records):
case_id = str(report.case_id) if report.case_id else ''
case_name = report.case.name if report.case else ''
self.report_table_widget.setItem(i, 0, QTableWidgetItem(case_id))
self.report_table_widget.setItem(i, 1, QTableWidgetItem(case_name))
self.report_table_widget.setItem(i, 2, QTableWidgetItem(report.device_id))
self.report_table_widget.setItem(i, 3,
QTableWidgetItem(report.start_time.strftime("%Y-%m-%d %H:%M:%S")))
self.report_table_widget.setItem(i, 4,
QTableWidgetItem(report.end_time.strftime("%Y-%m-%d %H:%M:%S")))
status = '??' if report.status == 0 else '??'
self.report_table_widget.setItem(i, 5, QTableWidgetItem(status))
self.report_table_widget.cellClicked.connect(self.cell_clicked)
self.report_table_widget.resizeColumnsToContents() # Adjust the width according to the content
self.report_table_widget.horizontalHeader().setStretchLastSection(True)
def set_table_widget(self):
header_text_list = ['id', '????', '????', '??', '???', '???']
self.task_record_statses = get_task_record_stats()
row_count = len(self.task_record_statses) if self.task_record_statses else 0
column_count = len(header_text_list)
self.event_table_widget.setColumnCount(column_count)
self.event_table_widget.setRowCount(row_count)
self.event_table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.event_table_widget.horizontalHeader().setStyleSheet("QHeaderView::section{background: #ECF5FF;}")
for column in range(0, self.event_table_widget.columnCount()):
table_header_item = QTableWidgetItem(header_text_list[column])
table_header_item.setFont(QFont("Roman times", 12, QFont.Bold))
self.event_table_widget.setHorizontalHeaderItem(column, table_header_item)
if self.task_record_statses:
for i, task_record_stats in enumerate(self.task_record_statses):
self.event_table_widget.setItem(i, 0, QTableWidgetItem(str(task_record_stats.id)))
self.event_table_widget.setItem(i, 1, QTableWidgetItem(
task_record_stats.start_time.strftime("%Y-%m-%d %H:%M:%S")))
self.event_table_widget.setItem(i, 2, QTableWidgetItem(
task_record_stats.end_time.strftime("%Y-%m-%d %H:%M:%S")))
self.event_table_widget.setItem(i, 3, QTableWidgetItem(str(task_record_stats.total_count)))
self.event_table_widget.setItem(i, 4, QTableWidgetItem(str(task_record_stats.pass_count)))
self.event_table_widget.setItem(i, 5, QTableWidgetItem(str(task_record_stats.fail_count)))
self.event_table_widget.cellClicked.connect(self.cell_clicked)
self.event_table_widget.resizeColumnsToContents() # Adjust the width according to the content
self.event_table_widget.horizontalHeader().setStretchLastSection(True)
def knn_add_file(self):
varname = self.ui.knnVarNameEdit.text()
fl = self.ui.knnInputEdit.text()
perturb = self.ui.knnPerturbation.currentIndex()
rowIdx = self.ui.knnTableWidget.rowCount()
self.ui.knnTableWidget.insertRow(rowIdx)
varname_item = QtWidgets.QTableWidgetItem(varname)
fl_item = QtWidgets.QTableWidgetItem(fl)
perturbation_item = QtWidgets.QTableWidgetItem(str(perturb))
self.ui.knnTableWidget.setItem(rowIdx, 0, varname_item)
self.ui.knnTableWidget.setItem(rowIdx, 1, fl_item)
self.ui.knnTableWidget.setItem(rowIdx, 2, perturbation_item)
def paste(self):
data = QtWidgets.QApplication.clipboard().text().split('\n')
for i, row in enumerate(data):
for j, element in enumerate(row.split('\t')):
self.setItem(i, j, QtWidgets.QTableWidgetItem(element))
# Created by: PyQt5 UI code generator 5.6
def buildTable():
cconn, data = SQL_Handler.connectToDatabase('fobs', form.UsernameField.text(), form.PasswordField.text(), 'localhost')
form2.sqlTable.clear()
SQL_Handler.getAndSetData(cconn)
form2.sqlTable.setColumnCount(len(data))
form2.sqlTable.setRowCount(len(list(data.values())[0]))
form2.sqlTable.setHorizontalHeaderLabels(sorted([d for d in data.keys()]))
form2.sqlTable.resizeRowsToContents()
form2.sqlTable.resizeColumnsToContents()
for col, key in enumerate(sorted(data.keys())):
for row, item in enumerate(data[key]):
itemWidget = QTableWidgetItem(str(item))
form2.sqlTable.setItem(row, col, itemWidget)
def table_fill(self, table_data, field_names):
for row_count, row in enumerate(table_data):
for col_count, col in enumerate(field_names):
value = row[col]
if not isinstance(value, str):
value = str(value)
self.tableWidget.setItem(row_count, col_count,
QtWidgets.QTableWidgetItem(
value))
def setFormatValue(self, row, column, value):
self.allFormatsTable.setItem(row, column, QTableWidgetItem(value))
def setFormatValue(self, row, column, value):
self.allFormatsTable.setItem(row, column, QTableWidgetItem(value))
def newLang_action(self):
if len(self.memoData['fileList'].keys()) == 0:
print("You need have UI name structure loaded in order to create a new language.")
else:
text, ok = QtWidgets.QInputDialog.getText(self, 'New Translation Creation', 'Enter language file name (eg. lang_cn):')
if ok:
if text in self.memoData['fileList'].keys():
print("This Language already in the table.")
else:
self.uiList['dict_table'].insertColumn(self.uiList['dict_table'].columnCount())
index = self.uiList['dict_table'].columnCount() - 1
self.uiList['dict_table'].setHorizontalHeaderItem(index, QtWidgets.QTableWidgetItem(text) )
def changeTableHeader(self, index):
table = self.uiList["dict_table"]
oldHeader = str(table.horizontalHeaderItem(index).text())
text, ok = QtWidgets.QInputDialog.getText(self, 'Change header label for column %d' % index,'Header:',QtWidgets.QLineEdit.Normal, oldHeader)
if ok:
if text in self.memoData['fileList'].keys():
print("This Language already in the table.")
else:
table.setHorizontalHeaderItem(index, QtWidgets.QTableWidgetItem(text) )
def memory_to_source_ui(self):
# update ui once memory gets update
txt='\n'.join([row for row in self.memoData['fileList']])
self.uiList['source_txtEdit'].setText(txt)
# table
table = self.uiList['dict_table']
table.clear()
table.setRowCount(0)
table.setColumnCount(0)
headers = ["UI Name"]
table.insertColumn(table.columnCount())
for key in self.memoData['fileList']:
headers.append(key)
table.insertColumn(table.columnCount())
table.setHorizontalHeaderLabels(headers)
ui_name_ok = 0
translate = 1
for file in self.memoData['fileList']:
for row, ui_name in enumerate(self.memoData['fileList'][file]):
#create ui list
if ui_name_ok == 0:
ui_item = QtWidgets.QTableWidgetItem(ui_name)
table.insertRow(table.rowCount())
table.setItem(row, 0, ui_item)
translate_item = QtWidgets.QTableWidgetItem(self.memoData['fileList'][file][ui_name])
table.setItem(row, translate, translate_item)
ui_name_ok = 1
translate +=1
def add_chunk_trace_table(self, table, trace, k, index):
i = index
while k in trace.instrs:
inst = trace.instrs[k]
if k in trace.metas:
for name, arg1, arg2 in trace.metas[k]:
if name == "wave":
infos = ["=", "========", "> Wave:"+str(arg1)]
elif name == "exception":
infos = ["", "", "Exception type:"+str(arg1)+" @handler:"+str(arg2)]
elif name == "module":
infos = ["", "Module", arg1]
else:
infos = ["", "", "Invalid"]
for col_id, cell in enumerate(infos):
newitem = QtWidgets.QTableWidgetItem(cell)
newitem.setFlags(newitem.flags() ^ QtCore.Qt.ItemIsEditable)
table.setItem(i, col_id, newitem)
i += 1
info = [str(k), hex(inst.address)[:-1], inst.opcode]
for col_id, cell in enumerate(info):
newitem = QtWidgets.QTableWidgetItem(cell)
newitem.setFlags(newitem.flags() ^ QtCore.Qt.ItemIsEditable)
table.setItem(i, col_id, newitem)
i += 1
k += 1