def render_new_table_header_item(self, text): """create new table header item with our style @param text: header text to display """ item = QTableWidgetItem(text) item.setForeground(self._config.getColor("graph.true")) font = QFont() font.setBold(True) item.setFont(font) return item
def on_job_done(self, done_processes): self.clear() self.fix_header() # If more jobs than rows if len(self.jobs) >= self.rowCount(): self.setRowCount(len(self.jobs)) for row in range(self.rowCount()): for column in range(self.columnCount()): item = QTableWidgetItem() item.setText('') self.setItem(row, column, item) # Note: new rowcount here jobs_check_rows = [] row = 0 for job in self.jobs: if job in self.jobs_check: jobs_check_rows.append(row) job = [i.replace('\n', '') for i in job] for column in range(self.columnCount() - 1): item = self.item(row, column) if len(job) - 1 >= column: if job[column] == 'COMPLETED': item.setForeground(QColor(0, 255, 150)) elif job[column] in self.options: item.setForeground(QColor(255, 0, 0)) else: pass item.setText(job[column]) row += 1 for job, out, row in zip(self.jobs_check, done_processes, jobs_check_rows): out = out.split('\t') second_last_item = self.item(row, self.columnCount() - 2) last_item = self.item(row, self.columnCount() - 1) if any("run_quandenser.sh" in line for line in out): second_last_item.setForeground(QColor('red')) second_last_item.setText("RUNNING") else: # Check stdout file label = check_stdout(job[1] + '/' + 'stdout.txt') if label == 'COMPLETED': second_last_item.setForeground(QColor(0, 255, 150)) else: second_last_item.setForeground(QColor(255, 0, 0)) second_last_item.setText(label) self.update_job_file(job, label) if second_last_item.text() == "RUNNING": button = kill_button(job[0], self.jobs_path, job) # job[0] = pid self.setCellWidget(row, self.columnCount() - 1, button)
def show_data_in_table(self, show_data, header_keys): """ 将数据在表格中展示出来 """ self.data_table.clear() self.data_table.setRowCount(0) self.data_table.setColumnCount(0) self.tips_animation_timer.stop() # 停止计时 self.timeout_count = 0 # 计数归0 self.tip_label.setText("获取结果成功! ") # 生成表格的列头 self.data_table.setColumnCount(len(header_keys) * 2) interval_day = self.interval_days.value() for count in range(2): for index, h_key in enumerate(header_keys): if index == 0: item = QTableWidgetItem('品种') elif index == 1: item = QTableWidgetItem(h_key) else: item = QTableWidgetItem( str((index - 1) * interval_day) + "天前") setattr(item, 'key', h_key) self.data_table.setHorizontalHeaderItem( index + count * len(header_keys), item) is_pre_half = True for variety, variety_values in show_data.items(): row = self.data_table.rowCount() if is_pre_half: col_start = 0 col_end = len(header_keys) self.data_table.insertRow(row) self.data_table.setRowHeight(row, 10) else: row -= 1 col_start = len(header_keys) col_end = self.data_table.columnCount() for col in range(col_start, col_end): data_key = getattr(self.data_table.horizontalHeaderItem(col), 'key') if col == col_start: v_zh = VARIETY_ZH.get(variety_values['variety_en'], variety_values['variety_en']) item = QTableWidgetItem(v_zh) item.setForeground(QBrush(QColor(180, 60, 60))) else: item = QTableWidgetItem( str(int(variety_values.get(data_key, 0)))) item.setTextAlignment(Qt.AlignCenter) self.data_table.setItem(row, col, item) is_pre_half = not is_pre_half
def __init__(self, messages, hiddenLifelines, parent=None): super(HiddenMessageDialog, self).__init__(parent) self.lifelineList = hiddenLifelines self.msgList = messages layout = QVBoxLayout(self) listTitle = QLabel('Hidden Messages') layout.addWidget(listTitle) self.listHiddenMessages = QTableWidget(len(self.msgList), 4) self.listHiddenMessages.setHorizontalHeaderLabels( ['Index', 'Name', 'Departure', 'Destination']) self.listHiddenMessages.setFixedWidth(400) #self.listHiddenMessages.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) self.listHiddenMessages.setSelectionBehavior( QAbstractItemView.SelectRows) for idx, msg in enumerate(self.msgList): self.listHiddenMessages.setItem( idx, 0, QTableWidgetItem("%d" % msg['messageindex'])) self.listHiddenMessages.setItem(idx, 1, QTableWidgetItem(msg['message'])) item = QTableWidgetItem(msg['departure']['class']) item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight) if msg['departure']['class'] in self.lifelineList: item.setForeground(QColor(200, 200, 200)) self.listHiddenMessages.setItem(idx, 2, item) item = QTableWidgetItem(msg['dest']) item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight) if msg['dest'] in self.lifelineList: item.setForeground(QColor(200, 200, 200)) self.listHiddenMessages.setItem(idx, 3, item) layout.addWidget(self.listHiddenMessages) buttons = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self) buttons.button(QDialogButtonBox.Ok).setText('Show') buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) layout.addWidget(buttons)
def extract_spot_source_price(self): """ 提取现货数据 """ self.final_data.clear() current_date = self.current_date.text() self.today_str = datetime.strptime(current_date, "%Y-%m-%d").strftime("%Y%m%d") source_str = self.source_edit.text().strip() if not source_str: self.tip_label.setText("请输入源数据再进行提取! ") return self.tip_label.setText("正在提取数据... ") variety_item_list = re.split(r'[;;。]+', source_str) # 根据分号切割 for row, variety_item in enumerate(variety_item_list): print(variety_item) data_list = re.split(r'[:,:,]+', variety_item) variety_dict = { "date": self.today_str, "variety_en": VARIETY_EN.get(data_list[0].strip(), "未知"), "spot_price": float(data_list[1]), "price_increase": float(data_list[2]) } self.preview_table.insertRow(row) item0 = QTableWidgetItem(variety_dict["date"]) self.preview_table.setItem(row, 0, item0) item1 = QTableWidgetItem(data_list[0].strip()) self.preview_table.setItem(row, 1, item1) item2 = QTableWidgetItem(variety_dict["variety_en"]) self.preview_table.setItem(row, 2, item2) item3 = QTableWidgetItem(str(variety_dict["spot_price"])) self.preview_table.setItem(row, 3, item3) item4 = QTableWidgetItem(str(variety_dict["price_increase"])) self.preview_table.setItem(row, 4, item4) if variety_dict["variety_en"] == "未知": item0.setForeground(QBrush(QColor(250, 100, 100))) item1.setForeground(QBrush(QColor(250, 100, 100))) item2.setForeground(QBrush(QColor(250, 100, 100))) item3.setForeground(QBrush(QColor(250, 100, 100))) item4.setForeground(QBrush(QColor(250, 100, 100))) self.final_data.append(variety_dict) self.tip_label.setText("数据提取完成! ")
def __init__(self, messages, hiddenLifelines, parent = None): super(HiddenMessageDialog, self).__init__(parent) self.lifelineList = hiddenLifelines self.msgList = messages layout = QVBoxLayout(self) listTitle = QLabel('Hidden Messages') layout.addWidget(listTitle) self.listHiddenMessages = QTableWidget(len(self.msgList),4) self.listHiddenMessages.setHorizontalHeaderLabels(['Index','Name','Departure','Destination']) self.listHiddenMessages.setFixedWidth(400) #self.listHiddenMessages.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) self.listHiddenMessages.setSelectionBehavior(QAbstractItemView.SelectRows) for idx, msg in enumerate(self.msgList): self.listHiddenMessages.setItem(idx,0,QTableWidgetItem("%d" % msg['messageindex'])) self.listHiddenMessages.setItem(idx,1,QTableWidgetItem(msg['message'])) item = QTableWidgetItem(msg['departure']['class']) item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight) if msg['departure']['class'] in self.lifelineList: item.setForeground(QColor(200,200,200)) self.listHiddenMessages.setItem(idx,2,item) item = QTableWidgetItem(msg['dest']) item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight) if msg['dest'] in self.lifelineList: item.setForeground(QColor(200,200,200)) self.listHiddenMessages.setItem(idx,3,item) layout.addWidget(self.listHiddenMessages) buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self) buttons.button(QDialogButtonBox.Ok).setText('Show') buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) layout.addWidget(buttons)
def populateTable(self, path): "fill file table with file names" self.showFolder(path) names = [] for n in os.listdir(path): if os.path.isdir(os.path.join(path, n)): continue # folder names.append(n) self.folderTable.clearContents() self.folderTable.setRowCount(len(names)) self.folderTable.setColumnCount(1) if not names: # no files in this folder, inform user self.setMessage('This folder has no files') return self.folderTable.blockSignals(True) selEnab = Qt.ItemIsSelectable | Qt.ItemIsEnabled for i, n in enumerate(names): item = QTableWidgetItem() item.setText(n) item.setToolTip(n) item.setFlags(selEnab) # color code encrypted/decrypted files if n in self.encrypted: item.setTextColor(QColor(211, 70, 0)) # allowed encrypted filenames to be changed item.setFlags(selEnab | Qt.ItemIsEditable) if n in self.decrypted: item.setForeground(QColor(0, 170, 255)) self.folderTable.setItem(i, 0, item) if len(names) > 5: self.setMessage('{:,} files'.format(len(names)), 7) self.folderTable.blockSignals(False) return
def query_spot_price_reply(self): """ 获取指定日期现货数据返回 """ reply = self.sender() data = reply.readAll().data() if reply.error(): self.modify_tip_label.setText("获取{}现货动态数据失败:\n{}".format( self.modify_date_edit.text(), reply.error())) else: data = json.loads(data.decode("utf-8")) self.modify_tip_label.setText(data["message"]) reply.deleteLater() self.modify_table.clearContents() self.modify_table.setRowCount(0) for row, row_item in enumerate(data["data"]): self.modify_table.insertRow(row) item0 = QTableWidgetItem(str(row_item["id"])) item1 = QTableWidgetItem(row_item["date"]) item2 = QTableWidgetItem(row_item["variety_en"]) item3 = QTableWidgetItem(str(row_item["spot_price"])) item4 = QTableWidgetItem(str(row_item["price_increase"])) item0.setTextAlignment(Qt.AlignCenter) item1.setTextAlignment(Qt.AlignCenter) item2.setTextAlignment(Qt.AlignCenter) item3.setTextAlignment(Qt.AlignCenter) item4.setTextAlignment(Qt.AlignCenter) # ID 日期 品种不支持修改 item0.setFlags(Qt.ItemIsEditable) item0.setForeground(QBrush(QColor(50, 50, 50))) item1.setFlags(Qt.ItemIsEditable) item1.setForeground(QBrush(QColor(50, 50, 50))) item2.setFlags(Qt.ItemIsEditable) item2.setForeground(QBrush(QColor(50, 50, 50))) self.modify_table.setItem(row, 0, item0) self.modify_table.setItem(row, 1, item1) self.modify_table.setItem(row, 2, item2) self.modify_table.setItem(row, 3, item3) self.modify_table.setItem(row, 4, item4) m_button = QPushButton("确定", self) m_button.setObjectName("modifyButton") m_button.setCursor(Qt.PointingHandCursor) setattr(m_button, 'row_index', row) m_button.clicked.connect(self.modify_row_data) self.modify_table.setCellWidget(row, 5, m_button)