def update_args_filter(self, row: int): txt = self.tableWidget.item(row, 0).text() args_str = "; ".join([f"{arg}={value}" for arg, value in self.func_dict[txt].items()]) self.tableWidget.setItem(row, 1, QTableWidgetItem(args_str))
def buscarB(self): print('funciona') for i in range(len(self.l)): for j in range(len(self.l[0])): self.table.setItem(i, j, QTableWidgetItem(str(self.l[i][j])))
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(366, 520) MainWindow.setAttribute(Qt.WA_TranslucentBackground) MainWindow.setWindowFlag(Qt.FramelessWindowHint) MainWindow.setMaximumSize(QSize(420, 600)) MainWindow.setStyleSheet("") self.Ventana = QWidget(MainWindow) self.Ventana.setMaximumSize(QSize(500, 600)) self.Ventana.setStyleSheet("*{\n" " font-family: century gothic;\n" "\n" "}\n" "QSizeGrip{\n" "background:transparent;\n" "}\n" "\n" "QWidget#Ventana{\n" " background: transparent;\n" " border: none;\n" "}\n" "QLabel{\n" " color:white;\n" "}\n" "\n" "") self.Ventana.setObjectName("Ventana") self.horizontalLayout = QHBoxLayout(self.Ventana) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setSpacing(0) self.horizontalLayout.setObjectName("horizontalLayout") self.VentanaFrame = QFrame(self.Ventana) self.VentanaFrame.setStyleSheet("QFrame#VentanaFrame{\n" " background-color: qlineargradient(spread:pad, x1:0.953, y1:1, x2:1, y2:0, stop:0 #075E54, stop:1 #128C7E); \n" " border-radius:5px;\n" "}\n" "") self.VentanaFrame.setFrameShape(QFrame.StyledPanel) self.VentanaFrame.setFrameShadow(QFrame.Raised) self.VentanaFrame.setObjectName("VentanaFrame") self.gridLayout_2 = QGridLayout(self.VentanaFrame) self.gridLayout_2.setContentsMargins(10, 15, 15, 5) self.gridLayout_2.setSpacing(0) self.gridLayout_2.setObjectName("gridLayout_2") self.Contenedor = QFrame(self.VentanaFrame) self.Contenedor.setStyleSheet("QFrame#Contenedor{\n" " background-color: #128c7e;\n" " border-radius:20px;\n" "}") self.Contenedor.setFrameShape(QFrame.StyledPanel) self.Contenedor.setFrameShadow(QFrame.Raised) self.Contenedor.setObjectName("Contenedor") self.gridLayout = QGridLayout(self.Contenedor) self.gridLayout.setObjectName("gridLayout") self.frameAcciones = QFrame(self.Contenedor) sizePolicy =QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.frameAcciones.sizePolicy().hasHeightForWidth()) self.frameAcciones.setSizePolicy(sizePolicy) self.frameAcciones.setStyleSheet("QFrame#frameAcciones{\n" " border:none;\n" "}\n" "QPushButton#btn_abrir{\n" " background-color: #ECF0F1;\n" " border-radius: 5px;\n" " color: #000;\n" "}\n" "\n" "QPushButton#btn_abrir:hover{\n" " background-color: #BDC3C7;\n" " color: #000;\n" "}") self.frameAcciones.setFrameShape(QFrame.StyledPanel) self.frameAcciones.setFrameShadow(QFrame.Raised) self.frameAcciones.setObjectName("frameAcciones") self.gridLayout_4 = QGridLayout(self.frameAcciones) self.gridLayout_4.setObjectName("gridLayout_4") self.btn_exportar = QPushButton(self.frameAcciones) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_exportar.sizePolicy().hasHeightForWidth()) self.btn_exportar.setSizePolicy(sizePolicy) self.btn_exportar.setMinimumSize(QSize(100, 30)) self.btn_exportar.setCursor(QCursor(Qt.PointingHandCursor)) self.btn_exportar.setStyleSheet("QPushButton#btn_exportar{\n" " background-color: #ECF0F1;\n" " border-radius: 5px;\n" " color: #000;\n" "}\n" "\n" "QPushButton#btn_exportar:hover{\n" " background-color: #BDC3C7;\n" " color: #000;\n" "}") icon = QIcon() icon.addPixmap(QPixmap("Images/exportar.png"), QIcon.Normal, QIcon.Off) self.btn_exportar.setIcon(icon) self.btn_exportar.setObjectName("btn_exportar") self.gridLayout_4.addWidget(self.btn_exportar, 0, 2, 1, 1) self.btn_abrir = QPushButton(self.frameAcciones) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_abrir.sizePolicy().hasHeightForWidth()) self.btn_abrir.setSizePolicy(sizePolicy) self.btn_abrir.setMinimumSize(QSize(100, 30)) self.btn_abrir.setCursor(QCursor(Qt.PointingHandCursor)) icon1 = QIcon() icon1.addPixmap(QPixmap("Images/anadir.png"), QIcon.Normal, QIcon.Off) self.btn_abrir.setIcon(icon1) self.btn_abrir.setObjectName("btn_abrir") self.gridLayout_4.addWidget(self.btn_abrir, 0, 1, 1, 1) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout_4.addItem(spacerItem, 0, 0, 1, 1) spacerItem1 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout_4.addItem(spacerItem1, 0, 3, 1, 1) self.gridLayout.addWidget(self.frameAcciones, 2, 0, 1, 1) self.header = QFrame(self.Contenedor) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.header.sizePolicy().hasHeightForWidth()) self.header.setSizePolicy(sizePolicy) self.header.setStyleSheet("QFrame{\n" " border: none;\n" "}") self.header.setFrameShape(QFrame.StyledPanel) self.header.setFrameShadow(QFrame.Raised) self.header.setObjectName("header") self.boxFlags = QHBoxLayout(self.header) self.boxFlags.setContentsMargins(5, 0, 0, 5) self.boxFlags.setSpacing(5) self.boxFlags.setObjectName("boxFlags") self.btn_rojo = QPushButton(self.header) self.btn_rojo.setMaximumSize(QSize(16, 16)) self.btn_rojo.setCursor(QCursor(Qt.PointingHandCursor)) self.btn_rojo.setStyleSheet("QPushButton#btn_rojo{\n" "border-radius: 8px;\n" "background-color: red;\n" "}\n" "QPushButton#btn_rojo:hover{\n" "border-radius: 8px;\n" "background-color: #b60600;\n" "}") self.btn_rojo.setText("") self.btn_rojo.setObjectName("btn_rojo") self.boxFlags.addWidget(self.btn_rojo) self.btn_verde = QPushButton(self.header) self.btn_verde.setMaximumSize(QSize(16, 16)) self.btn_verde.setCursor(QCursor(Qt.PointingHandCursor)) self.btn_verde.setStyleSheet("QPushButton#btn_verde{\n" "border-radius: 8px;\n" "background-color: #27ae60;\n" "}\n" "QPushButton#btn_verde:hover{\n" "border-radius: 8px;\n" "background-color: #7efc00;\n" "}") self.btn_verde.setText("") self.btn_verde.setObjectName("btn_verde") self.boxFlags.addWidget(self.btn_verde) self.btn_amarillo = QPushButton(self.header) self.btn_amarillo.setMaximumSize(QSize(16, 16)) self.btn_amarillo.setCursor(QCursor(Qt.PointingHandCursor)) self.btn_amarillo.setStyleSheet("QPushButton#btn_amarillo{\n" "border-radius: 8px;\n" "background-color: yellow;\n" "}\n" "QPushButton#btn_amarillo:hover{\n" "border-radius: 8px;\n" "background-color: #f1c40f;\n" "}") self.btn_amarillo.setText("") self.btn_amarillo.setObjectName("btn_amarillo") self.boxFlags.addWidget(self.btn_amarillo) spacerItem2 = QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum) self.boxFlags.addItem(spacerItem2) self.gridLayout.addWidget(self.header, 0, 0, 1, 1) self.frameLogo = QFrame(self.Contenedor) self.frameLogo.setStyleSheet("QFrame#frameLogo{\n" " border:none;\n" "}\n" "") self.frameLogo.setFrameShape(QFrame.StyledPanel) self.frameLogo.setFrameShadow(QFrame.Raised) self.frameLogo.setObjectName("frameLogo") self.gridLayout_3 = QGridLayout(self.frameLogo) self.gridLayout_3.setContentsMargins(0, 0, 0, 0) self.gridLayout_3.setSpacing(0) self.gridLayout_3.setObjectName("gridLayout_3") self.icon = QLabel(self.frameLogo) self.icon.setStyleSheet("") self.icon.setText("") self.icon.setPixmap(QPixmap("Images/whatsapp.png")) self.icon.setAlignment(Qt.AlignCenter) self.icon.setObjectName("icon") self.gridLayout_3.addWidget(self.icon, 0, 0, 1, 1) self.lblText = QLabel(self.frameLogo) font = QFont() font.setFamily("century gothic") font.setBold(True) font.setWeight(75) self.lblText.setFont(font) self.lblText.setStyleSheet("") self.lblText.setAlignment(Qt.AlignCenter) self.lblText.setObjectName("lblText") self.gridLayout_3.addWidget(self.lblText, 1, 0, 1, 1) self.gridLayout.addWidget(self.frameLogo, 1, 0, 1, 1) self.label = QLabel(self.Contenedor) font = QFont() font.setFamily("century gothic") font.setBold(True) font.setWeight(75) self.label.setFont(font) self.label.setAlignment(Qt.AlignCenter) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 4, 0, 1, 1) self.frame_tabla = QFrame(self.Contenedor) sizePolicy = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.frame_tabla.sizePolicy().hasHeightForWidth()) self.frame_tabla.setSizePolicy(sizePolicy) self.frame_tabla.setStyleSheet("QFrame#frame_tabla{\n" " border:none;\n" "}") self.frame_tabla.setFrameShape(QFrame.StyledPanel) self.frame_tabla.setFrameShadow(QFrame.Raised) self.frame_tabla.setObjectName("frame_tabla") self.horizontalLayout_2 = QHBoxLayout(self.frame_tabla) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setSpacing(9) self.horizontalLayout_2.setObjectName("horizontalLayout_2") spacerItem3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem3) self.tabla = QTableWidget(self.frame_tabla) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tabla.sizePolicy().hasHeightForWidth()) self.tabla.setSizePolicy(sizePolicy) self.tabla.setMinimumSize(QSize(250, 0)) self.tabla.setStyleSheet("*{\n" "color: #000;\n" "}\n" "QTableWidget#tabla:item{\n" " color: blue;\n" " font-family: bold;\n" "}\n" "\n" "QTableWidget#tabla{\n" " border-radius:4px;\n" " background-color: #128c7e;\n" "}\n" "QScrollBar:vertical{\n" " border: 1px solid #999999;\n" " width: 12px;\n" " margin: 0px 0px 0px 0px;\n" "}\n" "QScrollBar::handle:vertical{\n" " min-height: 0px;\n" " border: 0px solid red;\n" " border-radius: 4px;\n" " background-color: #3a727f;\n" "} \n" "QScrollBar::add-line:vertical{\n" " height: 0px;\n" " subcontrol-position: bottom;\n" " subcontrol-origin: margin;\n" "}\n" "QScrollBar::sub-line:vertical{\n" " height:0px;\n" " subcontrol-position:top;\n" " sucontrol-origin:margin;\n" "}\n" "QTableWidget:item:selected{\n" "background : #08a785;\n" "}\n" "QTableCornerButton:section{\n" "background-color: #00aa7f;\n" "}\n" "QHeaderView:section{\n" "background-color: #00aa7f;\n" "}\n" "\n" "") self.tabla.setRowCount(10) self.tabla.setObjectName("tabla") self.tabla.setColumnCount(2) item = QTableWidgetItem() self.tabla.setHorizontalHeaderItem(0, item) item = QTableWidgetItem() self.tabla.setHorizontalHeaderItem(1, item) self.horizontalLayout_2.addWidget(self.tabla) spacerItem4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem4) self.gridLayout.addWidget(self.frame_tabla, 3, 0, 1, 1) self.gridLayout_2.addWidget(self.Contenedor, 0, 1, 1, 1) self.Grip = QLabel(self.VentanaFrame) self.Grip.setMaximumSize(QSize(10, 10)) self.Grip.setCursor(QCursor(Qt.SizeFDiagCursor)) self.Grip.setLayoutDirection(Qt.RightToLeft) self.Grip.setStyleSheet("QLabel#Grip:hover{\n" " background: rgb(18,140,126);\n" " border-radius:5px;\n" "}\n" "QLabel#Grip{\n" " background-color: qlineargradient(spread:pad, x1:0.953, y1:1, x2:1, y2:0, stop:0 #075E54, stop:1 #128C7E); \n" " border-radius:5px;\n" "}") self.Grip.setText("") self.Grip.setObjectName("Grip") self.gridLayout_2.addWidget(self.Grip, 1, 1, 1, 1) self.horizontalLayout.addWidget(self.VentanaFrame) MainWindow.setCentralWidget(self.Ventana) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow)
def ToggleActiveRow(self, row, value="Playing"): ''' Toggle Active row manager video status ''' self.VManager.setItem( row, 2, QTableWidgetItem(QCoreApplication.translate("ManagerDock", value))) return
def populate_table(table, cols, vals, callback=None): """ populates table with data in cols, vals converts numerical strings to numerical to make sorting word as expected table is a QTableWidget """ N = len(vals) M = len(cols) clear_table(table) table.setRowCount(N) table.setColumnCount(M) for i, row in enumerate(vals): for j, col in enumerate(cols): val = vals[i][j] # if the value is a representation of null or empty str / just whitespace # display string [EMPTY] here, since it is needed in the update table at least if val != '[EMPTY]' and (is_null(val) or (isinstance(val, str) and not val.strip())): continue if isinstance(val, datetime.datetime): # format 17-03-20 18:44:15 val_str = val.strftime('%d-%m-%Y %H:%M:%S') # use int timestamp for sorting val = val.timestamp() elif isinstance(val, datetime.timedelta): val_str = str(val) val = val.total_seconds() else: val = convert_to_numeric(val) val_str = str(val) # QTableWidgetItem only accepts string values # the default implementation only sorts according to string values # SortableTableItem displays the first value, # and uses the second one for sorting item = SortableTableItem(val_str, val) table.setItem(i, j, item) # callback for each row if callback: callback(100 * i / (N * 1.1)) # set the column header names for j, col in enumerate(cols): if callback: callback(97 - 5 * (1 - (j / M))) item = QTableWidgetItem(col) table.setHorizontalHeaderItem(j, item) if callback: callback(98) table.resizeColumnsToContents() if callback: callback(99) table.resizeRowsToContents() if callback: callback(100)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1227, 858) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget) self.horizontalLayout.setObjectName("horizontalLayout") self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.tableWidget_dropzone = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget_dropzone.setMinimumSize(QtCore.QSize(602, 295)) self.tableWidget_dropzone.setMaximumSize(QtCore.QSize(602, 295)) self.tableWidget_dropzone.setObjectName("tableWidget_dropzone") self.tableWidget_dropzone.setColumnCount(3) self.tableWidget_dropzone.setRowCount(9) self.tableWidget_dropzone.setAcceptDrops(True) self.tableWidget_dropzone.setColumnWidth(0, 192) self.tableWidget_dropzone.setColumnWidth(1, 192) self.tableWidget_dropzone.setColumnWidth(2, 192) self.tableWidget_dropzone.setHorizontalHeaderLabels(['A1', 'A2', 'A3']) self.tableWidget_dropzone.setVerticalHeaderLabels( ['', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8']) dpath = 'C:/' comboBox1 = DataCombo(dpath) comboBox2 = QtWidgets.QComboBox() comboBox3 = QtWidgets.QComboBox() self.tableWidget_dropzone.setCellWidget(0, 0, comboBox1) self.tableWidget_dropzone.setCellWidget(0, 1, comboBox2) self.tableWidget_dropzone.setCellWidget(0, 2, comboBox3) self.verticalLayout_2.addWidget(self.tableWidget_dropzone) self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) self.textEdit_comment = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_comment.setMinimumSize(QtCore.QSize(602, 0)) self.textEdit_comment.setMaximumSize(QtCore.QSize(602, 16777215)) self.textEdit_comment.setObjectName("textEdit_comment") self.verticalLayout_2.addWidget(self.textEdit_comment) self.horizontalLayout.addLayout(self.verticalLayout_2) self.verticalLayout_3 = QtWidgets.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.verticalLayout_3.addWidget(self.label) self.comboBox = QtWidgets.QComboBox(self.centralwidget) self.comboBox.setMinimumSize(QtCore.QSize(400, 0)) self.comboBox.setObjectName("comboBox") self.verticalLayout_3.addWidget(self.comboBox) self.tableWidget_XLS = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget_XLS.setObjectName("tableWidget_XLS") self.tableWidget_XLS.setColumnCount(30) self.tableWidget_XLS.setRowCount(100) self.check_change = False book = xlrd.open_workbook("C:/Users/parla/Documents/test.xls", 'r') sheet = book.sheet_by_index(0) self.tableWidget_XLS.setColumnCount(sheet.ncols + 10) for row_index in range(0, sheet.nrows): # print(row_index) #row = self.rowCount() #self.insertRow(row) for col_index in range(0, sheet.ncols): # print(col_index) content = sheet.cell(row_index, col_index).value item = QTableWidgetItem(content) # print(content) self.tableWidget_XLS.setItem(row_index, col_index, item) self.tableWidget_XLS.setDragEnabled(True) #self.setAcceptDrops(True) self.check_change = True self.verticalLayout_3.addWidget(self.tableWidget_XLS) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_5.setObjectName("pushButton_5") self.horizontalLayout_2.addWidget(self.pushButton_5) self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setObjectName("pushButton_2") self.horizontalLayout_2.addWidget(self.pushButton_2) self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_4.setObjectName("pushButton_4") self.horizontalLayout_2.addWidget(self.pushButton_4) self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setObjectName("pushButton") self.horizontalLayout_2.addWidget(self.pushButton) self.verticalLayout_3.addLayout(self.horizontalLayout_2) self.horizontalLayout.addLayout(self.verticalLayout_3) self.tableWidget_dropzone.raise_() self.comboBox.raise_() self.label.raise_() self.comboBox.raise_() self.textEdit_comment.raise_() self.pushButton.raise_() self.label_2.raise_() self.pushButton_4.raise_() self.pushButton_5.raise_() self.pushButton_2.raise_() MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1227, 21)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.actionPreferences = QtWidgets.QAction(MainWindow) self.actionPreferences.setObjectName("actionPreferences") self.menuFile.addAction(self.actionPreferences) self.menubar.addAction(self.menuFile.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def initial_TableWidget(self, list, style): self.tableWidget.clearContents() self.tableWidget.setRowCount(len(list)) self.tableWidget.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) #所有列自动拉伸,充满界面 self.tableWidget.resizeColumnsToContents() #设置列宽高按照内容自适应 self.tableWidget.resizeRowsToContents() #设置行宽和高按照内容自适应 self.tableWidget.setSelectionMode( QAbstractItemView.SingleSelection) # 设置只能选中一行 self.tableWidget.setEditTriggers(QTableView.NoEditTriggers) # 不可编辑 self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) # 设置只有行选中, 整行选中 if (style == 1): self.tableWidget.setColumnCount(6) self.tableWidget.setHorizontalHeaderLabels( ['任务简述', '创建时间', '计划完成时间', '实际完成时间', '状态', '备注']) #index = 0 for index in range(len(list)): aTask = list[index] col = 0 newItem = QTableWidgetItem(str(aTask.name)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aTask.date_created.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aTask.date_planed.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aTask.date_closed.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aTask.status)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aTask.note)) self.tableWidget.setItem(index, col, newItem) elif (style == 2): self.tableWidget.setColumnCount(12) self.tableWidget.setHorizontalHeaderLabels([ '项目', '阶段', '序号', '业务流内容简述', '输入', '输出', '负责人', 'Milestone', '计划完成时间', '实际完成时间', '状态', '备注' ]) for index in range(len(list)): aWorkFlowItem = list[index] col = 0 newItem = QTableWidgetItem(str(aWorkFlowItem.project)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.phase)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.index)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.name)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.imput)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.output)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.responsible)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.milestone)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.date_planed)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.date_closed)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.status)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aWorkFlowItem.note)) self.tableWidget.setItem(index, col, newItem) elif (style == 3): self.tableWidget.setColumnCount(8) self.tableWidget.setHorizontalHeaderLabels( ['项目', 'G9', 'G8', 'G7', 'G6', 'G5', 'G4', 'G1']) for index in range(len(list)): aMainMileStone = list[index] col = 0 newItem = QTableWidgetItem(str(aMainMileStone.project)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G9.date)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G8.date)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G7.date)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G6.date)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G5.date)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G4.date)) self.tableWidget.setItem(index, col, newItem) ''' col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G3.date)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G2.date)) self.tableWidget.setItem(index, col, newItem)''' col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G1.date)) self.tableWidget.setItem(index, col, newItem) ''' col += 1 newItem = QTableWidgetItem(str(aMainMileStone.G0.date)) self.tableWidget.setItem(index, col, newItem)''' elif (style == 4): self.tableWidget.setColumnCount(6) self.tableWidget.setHorizontalHeaderLabels( ['项目', '数据&状态', '计划发布时间', '实际发布时间', '状态', '备注']) for index in range(len(list)): aDataReleasePlanItem = list[index] col = 0 newItem = QTableWidgetItem(str(aDataReleasePlanItem.project)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aDataReleasePlanItem.name)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem( str(aDataReleasePlanItem.date_planed)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aDataReleasePlanItem.date_real)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aDataReleasePlanItem.status)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aDataReleasePlanItem.note)) self.tableWidget.setItem(index, col, newItem) elif (style == 5): self.tableWidget.setColumnCount(13) self.tableWidget.setHorizontalHeaderLabels([ '项目', '问题序号', '问题描述', '建议措施', '问题进展', '状态', 'TOP', '干系人', '创建时间', '计划关闭时间', '跟踪时间', '实际关闭时间', '专业区域' ]) for index in range(len(list)): aSEProblem = list[index] col = 0 newItem = QTableWidgetItem(str(aSEProblem.project)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.index)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.brief_and_reason)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.suggestion)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.detail_and_progress)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.status)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.top)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.stakeholder)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem( str(aSEProblem.date_created.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str( aSEProblem.date_planed.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem( str(aSEProblem.date_followed.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str( aSEProblem.date_closed.datetime)) self.tableWidget.setItem(index, col, newItem) col += 1 newItem = QTableWidgetItem(str(aSEProblem.area_division)) self.tableWidget.setItem(index, col, newItem) else: QMessageBox.information(None, '消息', '非法的Table类型!', QMessageBox.Yes | QMessageBox.No)
def __init__(self): super().__init__() self.setWindowTitle('spectralUI') self.setMinimumSize(800, 600) # ---------------Menubar---------------- self.main_menu = self.menuBar() self.main_menu.setNativeMenuBar(False) self.file_menu = self.main_menu.addMenu("File") self.settings_menu = self.main_menu.addMenu("Settings") self.help_menu = self.main_menu.addMenu("Help") self.open_action = QAction("Open", self) self.exit_action = QAction("Exit", self) self.settings_action = QAction("Settings", self) self.help_action = QAction("Help", self) self.about_action = QAction("About", self) self.open_action.setShortcut("Ctrl+O") self.exit_action.setShortcut("Ctrl+Q") self.settings_action.setShortcut("Ctrl+P") self.help_action.setShortcut("Ctrl+H") self.about_action.setShortcut("Ctrl+A") self.file_menu.addAction(self.open_action) self.file_menu.addAction(self.exit_action) self.settings_menu.addAction(self.settings_action) self.help_menu.addAction(self.help_action) self.help_menu.addAction(self.about_action) self.open_action.triggered.connect(self.open_file) self.exit_action.triggered.connect(self.close) # -------------------Main Layout----------------- self.main_widget = QWidget() self.setCentralWidget(self.main_widget) self.main_canvas = FigureCanvasQTAgg(Figure(figsize=(5, 3))) self.main_nav_toolbar = NavigationToolbar2QT(self.main_canvas, self.main_widget) self.axes = self.main_canvas.figure.add_subplot() self.meta_data = QTableWidget() self.meta_data.setRowCount(9) self.meta_data.setColumnCount(2) self.meta_data.setEditTriggers(QTableWidget.NoEditTriggers) self.meta_data.setHorizontalHeaderItem(0, QTableWidgetItem("Property")) self.meta_data.setHorizontalHeaderItem(1, QTableWidgetItem("Value")) self.meta_data.setAlternatingRowColors(True) self.meta_data.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.meta_data.setItem(0, 0, QTableWidgetItem("Filename")) self.meta_data.setItem(1, 0, QTableWidgetItem("File Size")) self.meta_data.setItem(2, 0, QTableWidgetItem("Data")) self.meta_data.setItem(3, 0, QTableWidgetItem("Height")) self.meta_data.setItem(4, 0, QTableWidgetItem("Width")) self.meta_data.setItem(5, 0, QTableWidgetItem("No: of Bands")) self.meta_data.setItem( 6, 0, QTableWidgetItem("Max. Intensity of Current Band")) self.meta_data.setItem( 7, 0, QTableWidgetItem("Min. Intensity of Current Band")) self.meta_data.setItem( 8, 0, QTableWidgetItem("Avg. Intensity of Current Band")) self.spectral_signature_canvas = FigureCanvasQTAgg( Figure(figsize=(5, 3))) self.spectral_axes = self.spectral_signature_canvas.figure.\ add_subplot() self.spectral_nav_toolbar = NavigationToolbar2QT( self.spectral_signature_canvas, self.main_widget) self.vbox_layout = QVBoxLayout() self.vbox_layout_sub = QVBoxLayout() self.vbox_layout_spectral = QVBoxLayout() self.hbox_layout_sub = QHBoxLayout() self.hbox_layout_sub_sub = QHBoxLayout() self.label = QLabel("Choose Band ->") self.band_text = QLineEdit() self.button = QPushButton("Load Band") self.band_text.setEnabled(False) self.button.setEnabled(False) self.int_validator = QIntValidator() self.band_text.setValidator(self.int_validator) self.band_text.returnPressed.connect(self.load_new_band) self.button.clicked.connect(self.load_new_band) self.hbox_layout_sub_sub.addWidget(self.label) self.hbox_layout_sub_sub.addWidget(self.band_text) self.hbox_layout_sub_sub.addWidget(self.button) self.hbox_layout_sub.addWidget(self.main_nav_toolbar) self.hbox_layout_sub.addLayout(self.hbox_layout_sub_sub) self.vbox_layout_sub.addWidget(self.main_canvas) self.vbox_layout_sub.addLayout(self.hbox_layout_sub) self.vbox_layout_spectral.addWidget(self.spectral_signature_canvas) self.vbox_layout_spectral.addWidget(self.spectral_nav_toolbar) self.main_group_box = QGroupBox("Image Analysis Tool") self.main_group_box.setMinimumSize(400, 300) self.main_group_box.setLayout(self.vbox_layout_sub) self.meta_box_layout = QHBoxLayout() self.meta_box_layout.addWidget(self.meta_data) self.meta_group_box = QGroupBox("Metadata") self.meta_group_box.setLayout(self.meta_box_layout) self.spectral_group_box = QGroupBox("Spectral Signature") self.main_group_box.setMinimumSize(350, 300) self.spectral_group_box.setLayout(self.vbox_layout_spectral) self.splitter_top_horizontal = QSplitter(Qt.Horizontal) self.splitter_vertical = QSplitter(Qt.Vertical) self.splitter_top_horizontal.addWidget(self.main_group_box) self.splitter_top_horizontal.addWidget(self.meta_group_box) self.splitter_top_horizontal.setSizes([200, 200]) self.splitter_vertical.addWidget(self.splitter_top_horizontal) self.splitter_vertical.addWidget(self.spectral_group_box) self.splitter_vertical.setSizes([200, 200]) self.vbox_layout.addWidget(self.splitter_vertical) self.centralWidget().setLayout(self.vbox_layout)
def __setData__(self): self.insertRow(0) item = QTableWidgetItem('일간합계') item.setFlags(Qt.ItemIsEditable) item.setTextAlignment(Qt.AlignCenter) self.setItem(0, 0, item)
def _append_str_row(self, fstr): row = self.rowCount() self.insertRow(row) self.setItem(row, 0, QTableWidgetItem(fstr))
def fill_row(self, row, data): for index, elem in enumerate(data): item = QTableWidgetItem(str(elem)) self.table.setItem(row, index, item)
def __init__(self): QtWidgets.QMainWindow.__init__(self) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setWindowTitle("application main window") self.file_menu = QtWidgets.QMenu('&File', self) self.file_menu.addAction('&Quit', self.fileQuit, QtCore.Qt.CTRL + QtCore.Qt.Key_Q) self.menuBar().addMenu(self.file_menu) self.help_menu = QtWidgets.QMenu('&Help', self) self.menuBar().addSeparator() self.menuBar().addMenu(self.help_menu) self.help_menu.addAction('&About', self.about) self.main_widget = QtWidgets.QWidget(self) l = QtWidgets.QVBoxLayout(self.main_widget) self.dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4, dpi=100) l.addWidget(self.dc) self.main_widget.setFocus() self.setCentralWidget(self.main_widget) self.statusBar().showMessage("All hail matplotlib!", 2000) # LIST self.table = QTableWidget(6, 4) self.table.setFixedHeight(100) self.tableContent = {'subplot':['1','1','2','2','3','3'], 'X subscriber':['/log/spectrum','/log/spectrum'\ ,'/log/spectrum','/log/spectrum'\ ,'/log/spectrum','/log/spectrum' ], 'Y subscriber':['/log/x_kspace_real','/log/x_kspace_imaginary'\ ,'/log/y_kspace_real','/log/y_kspace_imaginary'\ ,'/log/z_kspace_real','/log/z_kspace_imaginary'], 'color':['b','r','b','r','b','r']} horHeaders = [] for n, key in enumerate( ['subplot', 'X subscriber', 'Y subscriber', 'color']): horHeaders.append(key) for m, item in enumerate(self.tableContent[key]): newitem = QTableWidgetItem(item) self.table.setItem(m, n, newitem) self.table.setHorizontalHeaderLabels(horHeaders) # Buttons self.plot_button = QPushButton("start") self.isPlotting = False self.add_button = QPushButton("add") self.remove_button = QPushButton("remove") self.plot_button.clicked.connect(lambda: self.plotButtonCallback()) self.add_button.clicked.connect(lambda: self.addButtonCallback()) self.remove_button.clicked.connect(lambda: self.removeButtonCallback()) l.addWidget(self.table) hbox = QHBoxLayout() hbox.addStretch(1) l.addLayout(hbox) hbox.addWidget(self.plot_button) hbox.addWidget(self.add_button) hbox.addWidget(self.remove_button)
def sel_color(self, s): global cards_data self.dict_curr_display.clear() if s == 0: self.ui.type_sel_card.clear() lens = len(self.all_cards) self.ui.sel_card_list.setRowCount(lens) i = -1 for k, v in self.all_cards.items(): i += 1 self.ui.sel_card_list.setItem(i, 0, QTableWidgetItem(k)) self.ui.sel_card_list.setItem(i, 1, QTableWidgetItem(v['NAME'])) self.ui.sel_card_list.setItem( i, 2, QTableWidgetItem(v['DESCRIPTION'])) elif s == 1: self.ui.type_sel_card.clear() self.ui.type_sel_card.addItem('ALL') self.ui.type_sel_card.addItem('Attack') self.ui.type_sel_card.addItem('Skill') self.ui.type_sel_card.addItem('Power') for k, v in self.all_cards.items(): if v.get('color') == 'red': self.dict_curr_display[k] = v lens = len(self.dict_curr_display) self.ui.sel_card_list.setRowCount(lens) i = -1 for k, v in self.dict_curr_display.items(): i += 1 self.ui.sel_card_list.setItem(i, 0, QTableWidgetItem(k)) self.ui.sel_card_list.setItem(i, 1, QTableWidgetItem(v['NAME'])) self.ui.sel_card_list.setItem( i, 2, QTableWidgetItem(v['DESCRIPTION'])) elif s == 2: self.ui.type_sel_card.clear() self.ui.type_sel_card.addItem('ALL') self.ui.type_sel_card.addItem('Attack') self.ui.type_sel_card.addItem('Skill') self.ui.type_sel_card.addItem('Power') for k, v in self.all_cards.items(): if v.get('color') == 'blue': self.dict_curr_display[k] = v lens = len(self.dict_curr_display) self.ui.sel_card_list.setRowCount(lens) i = -1 for k, v in self.dict_curr_display.items(): i += 1 self.ui.sel_card_list.setItem(i, 0, QTableWidgetItem(k)) self.ui.sel_card_list.setItem(i, 1, QTableWidgetItem(v['NAME'])) self.ui.sel_card_list.setItem( i, 2, QTableWidgetItem(v['DESCRIPTION'])) elif s == 3: self.ui.type_sel_card.clear() self.ui.type_sel_card.addItem('ALL') self.ui.type_sel_card.addItem('Attack') self.ui.type_sel_card.addItem('Skill') self.ui.type_sel_card.addItem('Power') for k, v in self.all_cards.items(): if v.get('color') == 'green': self.dict_curr_display[k] = v lens = len(self.dict_curr_display) self.ui.sel_card_list.setRowCount(lens) i = -1 for k, v in self.dict_curr_display.items(): i += 1 self.ui.sel_card_list.setItem(i, 0, QTableWidgetItem(k)) self.ui.sel_card_list.setItem(i, 1, QTableWidgetItem(v['NAME'])) self.ui.sel_card_list.setItem( i, 2, QTableWidgetItem(v['DESCRIPTION'])) elif s == 4: self.ui.type_sel_card.clear() self.ui.type_sel_card.addItem('ALL') self.ui.type_sel_card.addItem('Attack') self.ui.type_sel_card.addItem('Skill') self.ui.type_sel_card.addItem('Power') for k, v in self.all_cards.items(): if v.get('color') == 'colorless': self.dict_curr_display[k] = v lens = len(self.dict_curr_display) self.ui.sel_card_list.setRowCount(lens) i = -1 for k, v in self.dict_curr_display.items(): i += 1 self.ui.sel_card_list.setItem(i, 0, QTableWidgetItem(k)) self.ui.sel_card_list.setItem(i, 1, QTableWidgetItem(v['NAME'])) self.ui.sel_card_list.setItem( i, 2, QTableWidgetItem(v['DESCRIPTION'])) else: self.ui.type_sel_card.clear() for k, v in self.all_cards.items(): if v.get('color') == 'curse': self.dict_curr_display[k] = v lens = len(self.dict_curr_display) self.ui.sel_card_list.setRowCount(lens) i = -1 for k, v in self.dict_curr_display.items(): i += 1 self.ui.sel_card_list.setItem(i, 0, QTableWidgetItem(k)) self.ui.sel_card_list.setItem(i, 1, QTableWidgetItem(v['NAME'])) self.ui.sel_card_list.setItem( i, 2, QTableWidgetItem(v['DESCRIPTION']))
def create_item(row: int, col: int, text: str): item = QTableWidgetItem(str(text)) item.setFlags(Qt.ItemIsEnabled) self.table.setItem(row, col, item)
def give_role(self): sub_name = self.widj8.user.toPlainText() obj_name = self.widj8.obj.toPlainText() roles = self.widj8.r.toPlainText() parth = "data\\user.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_user = file_user.split('\n') user = [] for i in range(len(file_user)): user.append(file_user[i].split('|')) print(user) file.close() login = self.textLogin.toPlainText() current_log = "" komu = "" for i in range(len(user)): if (user[i][0] == login): current_log = i if (user[i][0] == sub_name): komu = i parth = "data\\file.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_users = file_user.split('\n') file.close() kuda = "" for i in range(len(file_users)): if (file_users[i] == obj_name): kuda = i result = self.widj.table.item(current_log, kuda).text() if ("o" in result): t = QTableWidgetItem(roles) self.widj.table.setItem(komu, kuda, t) self.widj.table.item(komu, kuda).setBackground(QColor(230, 230, 230)) else: self.widjError = QDialog() self.widjError.setGeometry(100, 100, 400, 300) self.widjError.lay = QGridLayout() self.widjError.label_user = QLabel("Ошибка, нет права!") self.widjError.lay.addWidget(self.widjError.label_user) self.widjError.setLayout(self.widjError.lay) self.widjError.show() parth2 = "data\\matrix.txt" file2 = open(parth2, 'w', encoding='utf-8') texts = [] for i in range(len(user)): texts.append([]) for j in range(len(file_users)): texts[i].append(self.widj.table.item(i, j).text()) print(texts) result = [] for i in range(len(texts)): str = "" for j in range(len(texts[i])): if (j != len(texts[i]) - 1): str += texts[i][j] + "|" else: str += texts[i][j] if (i != len(texts) - 1): str += "\n" result.append(str) print(result) file2.write("") for i in range(len(result)): file2.write(result[i]) file2.close() print(1)
def add_row_to_table(self): last_row = self.tableWidget.rowCount() self.tableWidget.insertRow(last_row) self.tableWidget.setItem(last_row, 0, QTableWidgetItem("Hi mom"))
def done(self): parth = "data\\user.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_user = file_user.split('\n') user = [] for i in range(len(file_user)): user.append(file_user[i].split('|')) print(user) file.close() parth = "data\\file.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_users = file_user.split('\n') file.close() login = self.textLogin.toPlainText() password = self.textPass.toPlainText() current_log = "" for i in range(len(user)): if (user[i][0] == login): current_log = i give_log = 1 for j in range(len(file_users)): if ('o' in self.widj.table.item(int(current_log), j).text()): newstr = self.widj.table.item(int(current_log), j).text().replace('o,', '') t = QTableWidgetItem(newstr) self.widj.table.setItem(give_log, j, t) parth2 = "data\\matrix.txt" file2 = open(parth2, 'w', encoding='utf-8') texts = [] for i in range(len(user)): texts.append([]) for j in range(len(file_users)): texts[i].append(self.widj.table.item(i, j).text()) print(texts) result = [] for i in range(len(texts)): str = "" for j in range(len(texts[i])): if (j != len(texts[i]) - 1): str += texts[i][j] + "|" else: str += texts[i][j] if (i != len(texts) - 1): str += "\n" result.append(str) print(result) file2.write("") for i in range(len(result)): file2.write(result[i]) file2.close() print(1)
def set(self, x, y, text): self.setItem(x, y, QTableWidgetItem(text))
def set_information(self, mode: int): # Presets decoderEdit = False self.ui.optionWidget.setCurrentIndex(0) txt = "" # Determine selected element if mode == 0: element = self.ui.basefunctions.currentItem().text() txt += element + ":\n" elif mode == 1: element = self.ui.additionalfunctions.currentItem().text() txt += element + ":\n" elif mode == 2: decoderEdit = True txt = "## DECODING PROCESS ##\n\n" element = self.ui.decoderchain.currentItem().text() if element[-1] == " ": elementname = element[0:-1] else: elementname = element txt += elementname + ":\n" self.active_message = element # Remove "[Disabled] " for further tasks if constants.DECODING_DISABLED_PREFIX in element: element = element[len(constants.DECODING_DISABLED_PREFIX):] # Write info text and show options if constants.DECODING_EDGE in element: txt += "Trigger on signal edge, i.e. the transition between low and high.\n" \ "- Low to High (01) is 1\n" \ "- High to Low (10) is 0" elif constants.DECODING_SUBSTITUTION in element: txt += "A set of manual defined signal sequences FROM (e.g. 110, 100) is replaced by another set of " \ "sequences TO (e.g. 01, 10). Note that all FROM entries must have the same length, otherwise " \ "the result is unpredictable! (For TX: all TO entries must have the same length)" self.ui.optionWidget.setCurrentIndex(3) # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.substitution_rows.setValue(4) self.ui.substitution.setRowCount(0) self.ui.substitution.setRowCount(4) else: if element in self.chainoptions: values = self.chainoptions[element] if values == "": self.ui.substitution_rows.setValue(4) self.ui.substitution.setRowCount(0) self.ui.substitution.setRowCount(4) else: arrs = self.e.get_subst_array(values) if len(arrs[0]) == len(arrs[1]): self.ui.substitution_rows.setValue(len(arrs[0])) self.ui.substitution.setRowCount(len(arrs[0])) for i in range(0, len(arrs[0])): self.ui.substitution.setItem( i, 0, QTableWidgetItem(self.e.bit2str( arrs[0][i]))) self.ui.substitution.setItem( i, 1, QTableWidgetItem(self.e.bit2str( arrs[1][i]))) else: self.ui.substitution_rows.setValue(4) self.ui.substitution.setRowCount(0) self.ui.substitution.setRowCount(4) self.ui.substitution.setEnabled(decoderEdit) self.ui.substitution_rows.setEnabled(decoderEdit) elif constants.DECODING_EXTERNAL in element: txt += "The decoding (and encoding) process is delegated to external programs or scripts via parameter.\n" \ "Example: Given the signal 10010110, your program is called as './decoder 10010110'. Your program " \ "computes and prints a corresponding set of 0s and 1s which is fed back into the decoding process. " self.ui.optionWidget.setCurrentIndex(4) # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.external_decoder.setText("") self.ui.external_encoder.setText("") else: if element in self.chainoptions: value = self.chainoptions[element] if value == "": self.ui.external_decoder.setText("") self.ui.external_encoder.setText("") else: decstr, encstr = value.split(";") self.ui.external_decoder.setText(decstr) self.ui.external_encoder.setText(encstr) else: self.ui.external_decoder.setText("") self.ui.external_encoder.setText("") self.ui.external_decoder.setEnabled(decoderEdit) self.ui.external_encoder.setEnabled(decoderEdit) elif constants.DECODING_INVERT in element: txt += "All bits are inverted, i.e. 0->1 and 1->0." elif constants.DECODING_ENOCEAN in element: txt += "Remove Wireless Short-Packet (WSP) encoding that is used by EnOcean standard." elif constants.DECODING_DIFFERENTIAL in element: txt += "Every transition between low and high (0->1 or 1->0) becomes 1, no transition (0->0 or 1->1) remains 0.\n" \ "The first signal bit is regarded as start value and directly copied.\n" \ "Example: 0011 becomes 0010 [0|(0->0)|(0->1)|(1->1)]." elif constants.DECODING_BITORDER in element: txt += "Every byte (8 bit) is reversed, i.e. the order of the bits 01234567 (e.g. least significant bit first) " \ "is changed to 76543210 (e.g. most significant bit first)." elif constants.DECODING_REDUNDANCY in element: txt += "If the source signal always has multiple redundant bits for one bit (e.g. 1111=1, 0000=0), the " \ "redundancy is removed here. You have to define the number of redundant bits." self.ui.optionWidget.setCurrentIndex(1) # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.multiple.setValue(2) else: if element in self.chainoptions: value = self.chainoptions[element] if value == "": self.ui.multiple.setValue(2) else: self.ui.multiple.setValue(int(value)) else: self.ui.multiple.setValue(2) self.ui.multiple.setEnabled(decoderEdit) elif constants.DECODING_MORSE in element: txt += "If the signal is a morse code, e.g. 00111001001110011100, where information are " \ "transported with long and short sequences of 1 (0 just for padding), then this " \ "decoding evaluates those sequences (Example output: 1011)." self.ui.optionWidget.setCurrentIndex(7) # # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.morse_low.setValue(1) self.ui.morse_high.setValue(3) self.ui.morse_wait.setValue(1) else: if element in self.chainoptions: value = self.chainoptions[element] if value == "": self.ui.morse_low.setValue(1) self.ui.morse_high.setValue(3) self.ui.morse_wait.setValue(1) else: try: l, h, w = value.split(";") self.ui.morse_low.setValue(int(l)) self.ui.morse_high.setValue(int(h)) self.ui.morse_wait.setValue(int(w)) except ValueError: self.ui.morse_low.setValue(1) self.ui.morse_high.setValue(3) self.ui.morse_wait.setValue(1) else: self.ui.morse_low.setValue(1) self.ui.morse_high.setValue(3) self.ui.morse_wait.setValue(1) self.ui.morse_low.setEnabled(decoderEdit) self.ui.morse_high.setEnabled(decoderEdit) self.ui.morse_wait.setEnabled(decoderEdit) elif constants.DECODING_CARRIER in element: txt += "A carrier is a fixed pattern like 1_1_1_1 where the actual data lies in between, e.g. 1a1a1b1. This " \ "function extracts the actual bit information (here: aab) from the signal at '_'/'.' positions.\n" \ "Examples:\n" \ "- Carrier = '1_' means 1_1_1_...\n" \ "- Carrier = '01_' means 01_01_01_01..." self.ui.optionWidget.setCurrentIndex(2) # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.carrier.setText("1_") else: if element in self.chainoptions: value = self.chainoptions[element] if value == "": self.ui.carrier.setText("1_") else: self.ui.carrier.setText(value) else: self.ui.carrier.setText("1_") self.ui.carrier.setEnabled(decoderEdit) elif constants.DECODING_DATAWHITENING in element: txt += "Texas Instruments CC110x chips allow a data whitening that is applied before sending the signals to HF. " \ "After a preamble (1010...) there is a fixed 16/32 bit sync word. The following data (incl. 16 bit CRC) " \ "is masked (XOR) with the output of a LFSR.\n" \ "This unmasks the data." self.ui.optionWidget.setCurrentIndex(5) # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.datawhitening_sync.setText("0xe9cae9ca") self.ui.datawhitening_polynomial.setText("0x21") else: if element in self.chainoptions: value = self.chainoptions[element] if value == "": self.ui.datawhitening_sync.setText("0xe9cae9ca") self.ui.datawhitening_polynomial.setText("0x21") else: try: whitening_sync, whitening_polynomial = value.split( ";") self.ui.datawhitening_sync.setText(whitening_sync) self.ui.datawhitening_polynomial.setText( whitening_polynomial) except ValueError: self.ui.datawhitening_sync.setText("0xe9cae9ca") self.ui.datawhitening_polynomial.setText("0x21") self.ui.datawhitening_sync.setEnabled(decoderEdit) self.ui.datawhitening_polynomial.setEnabled(decoderEdit) elif constants.DECODING_CUT in element: txt += "This function enables you to cut data from your messages, in order to shorten or align them for a " \ "better view. Note that this decoding does NOT support encoding, because cut data is gone!\n" \ "Example:\n" \ "- Cut before '1010' would delete everything before first '1010' bits.\n" \ "- Cut before Position = 3 (in bit) would delete the first three bits.\n" self.ui.optionWidget.setCurrentIndex(6) # Values can only be changed when editing decoder, otherwise default value if not decoderEdit: self.ui.cutmark.setText("1010") self.old_cutmark = self.ui.cutmark.text() self.ui.cutmark2.setValue(1) self.ui.rB_delbefore.setChecked(False) self.ui.rB_delafter.setChecked(False) self.ui.rB_delbeforepos.setChecked(False) self.ui.rB_delafterpos.setChecked(False) self.ui.cutmark.setEnabled(False) self.ui.cutmark2.setEnabled(False) else: if element in self.chainoptions: value = self.chainoptions[element] if value == "": self.ui.cutmark.setText("1010") self.ui.cutmark.setEnabled(True) self.old_cutmark = self.ui.cutmark.text() self.ui.cutmark2.setValue(1) self.ui.cutmark2.setEnabled(False) self.ui.rB_delbefore.setChecked(True) self.ui.rB_delafter.setChecked(False) self.ui.rB_delbeforepos.setChecked(False) self.ui.rB_delafterpos.setChecked(False) else: try: cmode, cmark = value.split(";") cmode = int(cmode) if cmode == 0: self.ui.rB_delbefore.setChecked(True) self.ui.cutmark.setEnabled(True) self.ui.cutmark2.setEnabled(False) self.ui.cutmark.setText(cmark) elif cmode == 1: self.ui.rB_delafter.setChecked(True) self.ui.cutmark.setEnabled(True) self.ui.cutmark2.setEnabled(False) self.ui.cutmark.setText(cmark) elif cmode == 2: self.ui.rB_delbeforepos.setChecked(True) self.ui.cutmark.setEnabled(False) self.ui.cutmark2.setEnabled(True) self.ui.cutmark2.setValue(int(cmark)) elif cmode == 3: self.ui.rB_delafterpos.setChecked(True) self.ui.cutmark.setEnabled(False) self.ui.cutmark2.setEnabled(True) self.ui.cutmark2.setValue(int(cmark)) except ValueError: self.ui.cutmark.setText("1010") self.old_cutmark = self.ui.cutmark.text() self.ui.cutmark2.setValue(1) self.ui.rB_delbefore.setChecked(True) self.ui.rB_delafter.setChecked(False) self.ui.rB_delbeforepos.setChecked(False) self.ui.rB_delafterpos.setChecked(False) self.ui.cutmark.setEnabled(True) self.ui.cutmark2.setEnabled(False) else: self.ui.cutmark.setText("1010") self.old_cutmark = self.ui.cutmark.text() self.ui.cutmark2.setValue(1) self.ui.rB_delbefore.setChecked(True) self.ui.rB_delafter.setChecked(False) self.ui.rB_delbeforepos.setChecked(False) self.ui.rB_delafterpos.setChecked(False) self.ui.cutmark.setEnabled(True) self.ui.cutmark2.setEnabled(False) self.ui.rB_delbefore.setEnabled(decoderEdit) self.ui.rB_delafter.setEnabled(decoderEdit) self.ui.rB_delbeforepos.setEnabled(decoderEdit) self.ui.rB_delafterpos.setEnabled(decoderEdit) self.ui.info.setText(txt)
def item(value): item = QTableWidgetItem(value) item.setTextAlignment(Qt.AlignCenter) item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) return item
def gen_table(self): time_weight = self.textEdit_timeweight.toPlainText() if time_weight: time_weight = float(time_weight) else: self.echo_error('拥堵时长权重不能为空,请检查') return False length_weight = self.textEdit_lengthweight.toPlainText() if length_weight: length_weight = float(length_weight) else: self.echo_error('拥堵距离权重不能为空,请检查') return False # 表格处理要完全清除 self.tableWidget.clear() self.tableWidget.setRowCount(0) self.tableWidget.setColumnCount(0) self.tableWidget.setSortingEnabled(True) self.tableWidget.horizontalHeader().setStyleSheet( "background-color: gray") self.tableWidget.setSelectionBehavior(1) self.tableWidget.horizontalHeader().setStretchLastSection(True) self.tableWidget.horizontalHeader().setSectionResizeMode(1) self.tableWidget.setShowGrid(True) file = open(JSON_FILE_PATH, 'r', encoding='utf-8') json_datas = json.load(file) time_max = max([float(x['jam_time']) for x in json_datas]) length_max = max([float(x['distance']) for x in json_datas]) json_datas.sort( key=lambda x: time_weight * float(x['jam_time']) / time_max + length_weight * float(x['distance']) / length_max, reverse=True) self.tableWidget.setColumnCount(len(TITLE_ROW)) self.tableWidget.setRowCount(len(json_datas)) self.tableWidget.setHorizontalHeaderLabels(TITLE_ROW) for row_index, json_data in enumerate(json_datas): no = json_data[JSON_NO] distance = json_data[JSON_DISTANCE] jam_time = json_data[JSON_JAM_TIME] start_point = json_data[JSON_START_POINT] start_place = json_data[JSON_START_PLACE] end_point = json_data[JSON_END_POINT] end_place = json_data[JSON_END_PLACE] # TODO date_type = json_data[JSON_DAY] jam_type = json_data[JSON_TYPE] if jam_type == 'red': color = '红色' elif jam_type == 'yellow': color = '橙黄' else: color = '黄色' if date_type == 'morning': day = '早高峰' else: day = '晚高峰' row_data = [ no, day, start_place, str(start_point).replace('[', '').replace(']', ''), end_place, str(end_point).replace('[', '').replace(']', ''), float(distance), color, jam_time ] for col_index, item in enumerate(row_data): qitem = QTableWidgetItem() qitem.setTextAlignment(Qt.AlignCenter) # set data好,不然text排序只按字符串排 qitem.setData(0, item) self.tableWidget.setItem(row_index, col_index, qitem)
def updateFilenames(self, files): for row in range(self.rowCount()): filepath = self.item(row, 4).text() newFileName = files[filepath]["out"] self.setItem(row, 2, QTableWidgetItem(newFileName))
def AddFileRowToManager(self, name, filename): ''' Add file Video to new Row ''' w = QWidget() layout = QVBoxLayout() pbar = QProgressBar() layout.addWidget(pbar) w.setLayout(layout) rowPosition = self.VManager.rowCount() self.VManager.insertRow(rowPosition) self.VManager.setItem(rowPosition, 0, QTableWidgetItem(str(rowPosition))) self.VManager.setItem(rowPosition, 1, QTableWidgetItem(name)) self.VManager.setItem( rowPosition, 2, QTableWidgetItem( QCoreApplication.translate("ManagerDock", "Loading"))) self.VManager.setItem(rowPosition, 3, QTableWidgetItem(filename)) self.VManager.setItem(rowPosition, 4, QTableWidgetItem("-")) self.VManager.setCellWidget(rowPosition, 5, w) self.VManager.setVisible(False) self.VManager.horizontalHeader().setStretchLastSection(True) pbar.setGeometry(0, 0, 300, 30) pbar.setValue(30) pbar.setMaximumHeight(30) self.pBars[str(rowPosition)] = pbar self.VManager.setVisible(True) if not self.isStreaming: info = FFMpeg().probe(filename) info.format.duration # init non-blocking metadata buffered reader self.meta_reader[str(rowPosition)] = BufferedMetaReader( filename, pass_time=self.pass_time, intervall=self.buffer_intervall, min_buffer_size=self.min_buffer_size) qgsu.showUserAndLogMessage( "", "buffered non-blocking metadata reader initialized.", onlyLog=True) pbar.setValue(60) try: # init point we can center the video on self.initialPt[str(rowPosition)] = getVideoLocationInfo( filename) if not self.initialPt[str(rowPosition)]: self.VManager.setItem( rowPosition, 4, QTableWidgetItem( QCoreApplication.translate( "ManagerDock", "Start location not available!"))) self.ToggleActiveRow(rowPosition, value="Not MISB") pbar.setValue(0) return else: self.VManager.setItem( rowPosition, 4, QTableWidgetItem(self.initialPt[str(rowPosition)][2])) except Exception: qgsu.showUserAndLogMessage( QCoreApplication.translate( "ManagerDock", "This video don't have Metadata ! ")) pbar.setValue(0) self.ToggleActiveRow(rowPosition, value="Not MISB") return pbar.setValue(90) if self.initialPt[str(rowPosition)] and dtm_path != '': initElevationModel(self.initialPt[str(rowPosition)][0], self.initialPt[str(rowPosition)][1], dtm_path) qgsu.showUserAndLogMessage("", "Elevation model initialized.", onlyLog=True) else: self.meta_reader[str(rowPosition)] = None self.initialPt[str(rowPosition)] = None pbar.setValue(100) self.ToggleActiveRow(rowPosition, value="Ready")
def add(self): parth = "data\\file.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_users = file_user.split('\n') file_users.append(self.widj4.obj.toPlainText()) file.close() file = open(parth, 'w', encoding='utf-8') file.write("") for i in range(len(file_users)): if (i != len(file_users) - 1): file.write(file_users[i] + "\n") else: file.write(file_users[i]) file.close() login = self.textLogin.toPlainText() password = self.textPass.toPlainText() current_log = "" for i in range(len(user)): if (user[i][0] == login): current_log = i self.widj.table.insertColumn(len(file_users) - 1) self.widj.table.setHorizontalHeaderItem( len(file_users) - 1, QTableWidgetItem(self.widj4.obj.toPlainText())) boola = user[current_log][2] for i in range(len(user)): t = QTableWidgetItem("") #self.widj.table.setItem(i, len(file_users)-1, t) if (boola != 'True'): t.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) #self.widj.table.item(i, len(file_users)-1).setBackground(QColor(230, 230, 230)) self.widj.table.setItem(i, len(file_users) - 1, t) if (boola != 'True'): #t.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) self.widj.table.item(i, len(file_users) - 1).setBackground( QColor(230, 230, 230)) t = QTableWidgetItem("o,w,r,e") if (boola != 'True'): t.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) self.widj.table.setItem(current_log, len(file_users) - 1, t) if (boola != 'True'): self.widj.table.item(current_log, len(file_users) - 1).setBackground( QColor(230, 230, 230)) parth2 = "data\\matrix.txt" file2 = open(parth2, 'w', encoding='utf-8') texts = [] for i in range(len(user)): texts.append([]) for j in range(len(file_users)): texts[i].append(self.widj.table.item(i, j).text()) print(texts) result = [] for i in range(len(texts)): str = "" for j in range(len(texts[i])): if (j != len(texts[i]) - 1): str += texts[i][j] + "|" else: str += texts[i][j] if (i != len(texts) - 1): str += "\n" result.append(str) print(result) file2.write("") for i in range(len(result)): file2.write(result[i]) file2.close() print(1)
def initUI(self, contents): self.setWindowTitle("NTFS Detail Viewer") self.setMinimumWidth(750) self.layout = QFormLayout(self) self.label1 = QLabel("- MFT Entry Detail", self) self.label1.setFixedWidth(320) self.label2 = QLabel("- USN Record Detail", self) self.label3 = QLabel("- File Name Attribute in MFT", self) self.label3.setFixedHeight(20) self.label3.setAlignment(Qt.AlignBottom) self.label4 = QLabel(self) self.label4.setFixedHeight(20) self.label4.setAlignment(Qt.AlignBottom) self.table1 = QTableWidget(self) self.table1.setFixedSize(300, 165) self.table1.verticalHeader().setVisible(False) self.table1.verticalHeader().setDefaultSectionSize(26) self.table1.verticalHeader().setMaximumSectionSize(26) self.table1.horizontalHeader().setVisible(False) self.table1.setRowCount(6) self.table1.setColumnCount(2) self.table1.setItem(0, 0, QTableWidgetItem("MFT Entry Number")) self.table1.setItem(1, 0, QTableWidgetItem("Sequence Value")) self.table1.setItem(2, 0, QTableWidgetItem("Base Entry")) self.table1.setItem(3, 0, QTableWidgetItem("Currently In Use")) self.table1.setItem(4, 0, QTableWidgetItem("Most Recently USN")) self.table1.setItem(5, 0, QTableWidgetItem("Most Recently LSN")) for i in range(len(contents[0]) - 1): self.table1.setItem(i, 1, QTableWidgetItem(contents[0][i])) self.table1.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table1.resizeColumnsToContents() for c in range(self.table1.columnCount()): self.table1.setColumnWidth(c, 130) self.table1.verticalHeader().setStretchLastSection(True) self.table1.horizontalHeader().setStretchLastSection(True) self.table2 = QTableWidget(self) self.table2.setMinimumWidth(280) self.table2.setFixedHeight(165) self.table2.verticalHeader().setVisible(False) self.table2.verticalHeader().setDefaultSectionSize(31) self.table2.verticalHeader().setMaximumSectionSize(31) self.table2.horizontalHeader().setVisible(False) self.table2.setRowCount(5) self.table2.setColumnCount(2) self.table2.setItem(0, 0, QTableWidgetItem("USN")) self.table2.setItem(1, 0, QTableWidgetItem("File Name")) self.table2.setItem(2, 0, QTableWidgetItem("Timestamp")) self.table2.setItem(3, 0, QTableWidgetItem("Reason")) self.table2.setItem(4, 0, QTableWidgetItem("File Attributes ")) for i in range(len(contents[1])): self.table2.setItem(i, 1, QTableWidgetItem(contents[1][i])) self.table2.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table2.resizeColumnsToContents() self.table2.verticalHeader().setStretchLastSection(True) self.table2.horizontalHeader().setStretchLastSection(True) if contents[0][-1]: attributes = contents[0][-1] self.table3 = QTableWidget(self) self.table3.setFixedHeight(115) self.table3.verticalHeader().setVisible(False) self.table3.verticalHeader().setDefaultSectionSize(28) self.table3.verticalHeader().setMaximumSectionSize(28) self.table3.setRowCount(len(contents[0][-1])) self.table3.setColumnCount(5) self.table3.setHorizontalHeaderLabels([ "File Name", "File Created Time", "File Modified Time", "MFT Modified Time", "File Accessed Time" ]) for row in range(len(attributes)): self.table3.setItem(row, 0, QTableWidgetItem(attributes[row][0])) self.table3.setItem(row, 1, QTableWidgetItem(attributes[row][1])) self.table3.setItem(row, 2, QTableWidgetItem(attributes[row][2])) self.table3.setItem(row, 3, QTableWidgetItem(attributes[row][3])) self.table3.setItem(row, 4, QTableWidgetItem(attributes[row][4])) for c in range(5): self.table3.item(row, c).setTextAlignment(Qt.AlignCenter) self.table3.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table3.resizeColumnsToContents() self.table3.verticalHeader().setStretchLastSection(True) self.table3.horizontalHeader().setStretchLastSection(True) else: self.table3 = QLabel("None") self.table3.setFixedHeight(40) self.table3.setFixedWidth(self.width()) self.table3.setAlignment(Qt.AlignCenter) if len(contents) == 3: self.label4.setText("- LogFile Transaction Number: {}".format( contents[-1][0])) self.table4 = QTableWidget(self) self.table4.verticalHeader().setVisible(False) self.table4.verticalHeader().setDefaultSectionSize(25) self.table4.verticalHeader().setMaximumSectionSize(25) self.table4.setRowCount(len(contents[2][1])) self.table4.setColumnCount(3) self.table4.setHorizontalHeaderLabels( ["LSN", "Redo Operation", "Undo Operation"]) self.table4.setColumnWidth(0, 120) self.table4.setColumnWidth(1, 300) self.table4.setColumnWidth(2, 300) row = 0 for lsn, redo_op, undo_op in contents[2][1]: self.table4.setItem(row, 0, QTableWidgetItem(str(lsn))) self.table4.setItem(row, 1, QTableWidgetItem(redo_op)) self.table4.setItem(row, 2, QTableWidgetItem(undo_op)) self.table4.item(row, 0).setTextAlignment(Qt.AlignCenter) row += 1 self.table4.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table4.horizontalHeader().setStretchLastSection(True) else: self.label4.setText("- LogFile Transaction Number:") self.table4 = QLabel("None") self.table4.setFixedHeight(60) self.table4.setFixedWidth(self.width()) self.table4.setAlignment(Qt.AlignCenter) self.layout.addRow(self.label1, self.label2) self.layout.addRow(self.table1, self.table2) self.layout.addRow(self.label3) self.layout.addRow(self.table3) self.layout.addRow(self.label4) self.layout.addRow(self.table4) self.show()
def add_sub(self): parth = "data\\user.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_user = file_user.split('\n') user = [] for i in range(len(file_user)): user.append(file_user[i].split('|')) file.close() user.append([ self.widj5.sub.toPlainText(), self.widj5.sub_pass.toPlainText(), 'False' ]) file = open(parth, 'w', encoding='utf-8') file.write("") result = [] for i in range(len(user)): str = "" for j in range(len(user[i])): if (j != len(user[i]) - 1): str += user[i][j] + "|" else: str += user[i][j] if (i != len(user) - 1): str += "\n" result.append(str) for i in range(len(result)): file.write(result[i]) file.close() self.widj.table.insertRow(len(user) - 1) self.widj.table.setVerticalHeaderItem( len(user) - 1, QTableWidgetItem(self.widj5.sub.toPlainText())) login = self.textLogin.toPlainText() password = self.textPass.toPlainText() parth = "data\\file.txt" file = open(parth, 'r', encoding='utf-8') file_user = file.read() file_users = file_user.split('\n') file.close() for i in range(len(file_users)): t = QTableWidgetItem("") self.widj.table.setItem(len(user) - 1, i, t) self.widj.table.setItem(len(user) - 1, 0, QTableWidgetItem("co,do")) parth2 = "data\\matrix.txt" file2 = open(parth2, 'w', encoding='utf-8') texts = [] for i in range(len(user)): texts.append([]) for j in range(len(file_users)): texts[i].append(self.widj.table.item(i, j).text()) print(texts) result = [] for i in range(len(texts)): str = "" for j in range(len(texts[i])): if (j != len(texts[i]) - 1): str += texts[i][j] + "|" else: str += texts[i][j] if (i != len(texts) - 1): str += "\n" result.append(str) print(result) file2.write("") for i in range(len(result)): file2.write(result[i]) file2.close() print(1)
def plot_data(self, result, values): """Plots the data from the sql query. Parameters ---------- result: Unused parameter values: list if success: [True, dict] else: [False, message, tracback] """ if values[0] is False: QMessageBox.information( None, self.tr('Error'), self.tr( 'Following error occurred: {m}\n\n Traceback: {t}'.format( m=values[1], t=values[2]))) return else: filtered_data = values[1] fig, ax1 = plt.subplots() #ax2 = ax1.twinx() if self.investigating_param['checked']: xlabels = filtered_data[1] x = np.arange(len(xlabels)) ax1.plot(x, filtered_data[0], color='green') ax1.set_xticks(x) ax1.set_xticklabels(xlabels, rotation=40, ha='right') #ax2.plot(x, filtered_data[2], 'x', color='blue') #ax2.set_xticks(x) #ax2.set_xticklabels(xlabels, rotation=40, ha='right') else: ax1.plot(filtered_data[1], filtered_data[0], color='green') #ax2.plot(filtered_data[1], filtered_data[2], 'x', color='blue') ax1.yaxis.label.set_color('green') ax1.set_xlabel(self.column_investigated.replace('_', ' ')) ax1.set_ylabel('mean yield (kg/ha)') #ax2.yaxis.label.set_color('blue') #ax2.set_ylabel(sel.tr('Number of harvest samples')) plt.subplots_adjust(wspace=0.6, hspace=0.6, left=0.17, bottom=0.12, right=0.85, top=0.92) self.canvas = FigureCanvas(fig) self.dlg.mplvl.addWidget(self.canvas) self.canvas.draw() self.dlg.TWValues.clear() self.dlg.TWValues.setRowCount(len(filtered_data[0])) self.dlg.TWValues.setColumnCount(3) self.dlg.TWValues.setHorizontalHeaderItem( 0, QTableWidgetItem(self.column_investigated.replace('_', ' '))) self.dlg.TWValues.setHorizontalHeaderItem( 1, QTableWidgetItem(self.tr('Average yield'))) self.dlg.TWValues.setHorizontalHeaderItem( 2, QTableWidgetItem(self.tr('Yield samples'))) for i, m_yield in enumerate(filtered_data[0]): try: current_value = filtered_data[1][i].replace("'", "") except AttributeError: try: current_value = round(filtered_data[1][i], 2) except: current_value = filtered_data[1][i] pass pass current_count = filtered_data[2][i] m_yield = round(m_yield, 2) item1 = QTableWidgetItem() item1.setText(str(current_value)) item2 = QTableWidgetItem() item2.setText(str(m_yield)) item3 = QTableWidgetItem() item3.setText(str(current_count)) self.dlg.TWValues.setItem(i, 0, item1) self.dlg.TWValues.setItem(i, 1, item2) self.dlg.TWValues.setItem(i, 2, item3)
def on_click(self): login = self.textLogin.toPlainText() password = self.textPass.toPlainText() flag = False boola = '' current_log = "" for i in range(len(user)): if (user[i][0] == login): current_log = user[i][0] if (user[i][1] == password): boola = user[i][2] flag = True if (flag): self.widj = QDialog() self.widj.setGeometry(100, 100, 800, 600) self.widj.lay = QGridLayout() self.widj.table = QTableWidget() self.widj.table.setRowCount(len(user)) self.widj.table.setColumnCount(len(file_users)) horHeader = [] for i in range(len(file_users)): horHeader.append(file_users[i]) self.widj.table.setHorizontalHeaderLabels(horHeader) vertHeader = [] for i in range(len(user)): vertHeader.append(user[i][0]) self.widj.table.setVerticalHeaderLabels(vertHeader) for i in range(len(user)): for j in range(len(file_users)): t = QTableWidgetItem(str(matrix[i][j])) if (boola != 'True'): t.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) self.widj.table.setItem(i, j, t) self.widj.table.item(i, j).setBackground( QColor(230, 230, 230)) else: self.widj.table.setItem(i, j, t) self.widj.button3 = QPushButton( "Проверить, есть ли \n требуемое разрешение \n в определенной ячейке" ) self.widj.button3.clicked.connect(self.on_click3) self.widj.lay.addWidget(self.widj.button3, 1, 1) self.widj.button4 = QPushButton("Добавить объект") self.widj.button4.clicked.connect(self.on_click4) self.widj.lay.addWidget(self.widj.button4, 2, 1) if (boola == 'True'): self.widj.button5 = QPushButton("Добавить субъект") self.widj.button5.clicked.connect(self.on_click5) self.widj.lay.addWidget(self.widj.button5, 3, 1) self.widj.button6 = QPushButton("Удалить объект") self.widj.button6.clicked.connect(self.on_click6) self.widj.lay.addWidget(self.widj.button6, 4, 1) if (boola == 'True'): self.widj.button7 = QPushButton("Удалить субъект") self.widj.button7.clicked.connect(self.on_click7) self.widj.lay.addWidget(self.widj.button7, 5, 1) self.widj.button8 = QPushButton("Передача прав") self.widj.button8.clicked.connect(self.on_click8) self.widj.lay.addWidget(self.widj.button8, 6, 1) self.widj.button1 = QPushButton("Сохранить изменения \n в матрице") self.widj.button1.clicked.connect(self.on_click2) self.widj.lay.addWidget(self.widj.button1, 8, 1) self.widj.button9 = QPushButton("Выполнить") self.widj.button9.clicked.connect(self.on_click9) self.widj.lay.addWidget(self.widj.button9, 7, 1) self.widj.lay.addWidget(self.widj.table, 0, 0) self.widj.setLayout(self.widj.lay) self.widj.show() else: self.widj = QDialog() self.widj.setGeometry(100, 100, 200, 100) label = QLabel("Error!", self.widj) label.move(50, 50) self.widj.show()
def setupUi(self, TbGen): TbGen.setObjectName("TbGen") TbGen.setWindowIcon(QtGui.QIcon("TG.png")) TbGen.resize(500, 300) self.verticalLayout = QVBoxLayout(TbGen) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout0 = QHBoxLayout() self.horizontalLayout0.setObjectName("horizontalLayout0") self.DutLabel = QLabel(TbGen) self.DutLabel.setObjectName("DutLabel") self.horizontalLayout0.addWidget(self.DutLabel) self.DutLineEdit = QLineEdit(TbGen) self.DutLineEdit.setObjectName("DutLineEdit") self.horizontalLayout0.addWidget(self.DutLineEdit) self.DutBrowseBT = QPushButton(TbGen) self.DutBrowseBT.setObjectName("DutBrowseBT") self.horizontalLayout0.addWidget(self.DutBrowseBT) self.verticalLayout.addLayout(self.horizontalLayout0) self.horizontalLayout1 = QHBoxLayout() self.horizontalLayout1.setObjectName("horizontalLayout1") self.OupLabel = QLabel(TbGen) self.OupLabel.setObjectName("OupLabel") self.horizontalLayout1.addWidget(self.OupLabel) self.OupLineEdit = QLineEdit(TbGen) self.OupLineEdit.setObjectName("OupLineEdit") self.horizontalLayout1.addWidget(self.OupLineEdit) self.OupBrowseBT = QPushButton(TbGen) self.OupBrowseBT.setObjectName("OupBrowseBT") self.horizontalLayout1.addWidget(self.OupBrowseBT) self.verticalLayout.addLayout(self.horizontalLayout1) self.horizontalLayout_2 = QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.SrcLabel = QLabel(TbGen) self.SrcLabel.setObjectName("SrcLabel") self.horizontalLayout_2.addWidget(self.SrcLabel) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem) self.SrcAddBT = QPushButton(TbGen) self.SrcAddBT.setObjectName("SrcAddBT") self.horizontalLayout_2.addWidget(self.SrcAddBT) self.SrcRemoveBT = QPushButton(TbGen) self.SrcRemoveBT.setObjectName("SrcRemoveBT") self.horizontalLayout_2.addWidget(self.SrcRemoveBT) self.verticalLayout.addLayout(self.horizontalLayout_2) ''' File Table Widget ''' self.FileTW = QTableWidget(TbGen) self.FileTW.setShowGrid(True) self.FileTW.setObjectName("FileTW") self.FileTW.setColumnCount(2) self.FileTW.setRowCount(0) item = QTableWidgetItem() self.FileTW.setHorizontalHeaderItem(0, item) item = QTableWidgetItem() self.FileTW.setHorizontalHeaderItem(1, item) self.FileTW.horizontalHeader().setVisible(True) self.FileTW.horizontalHeader().setCascadingSectionResizes(False) self.FileTW.setColumnWidth(0, 500) self.FileTW.setColumnWidth(1, 82) self.FileTW.horizontalHeader().setSectionResizeMode( 0, QHeaderView.Stretch) self.FileTW.horizontalHeader().setMinimumSectionSize(80) self.FileTW.horizontalHeader().setSortIndicatorShown(False) # 拉伸 最后一列 #self.FileTW.horizontalHeader().setStretchLastSection(True) self.FileTW.horizontalHeader().setStretchLastSection(False) ''' 禁止 编辑 ''' self.FileTW.setEditTriggers(QAbstractItemView.NoEditTriggers) self.verticalLayout.addWidget(self.FileTW) self.horizontalLayout_3 = QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.RelativePathCB = QCheckBox(TbGen) self.RelativePathCB.setObjectName("RelativePathCB") self.horizontalLayout_3.addWidget(self.RelativePathCB) self.OverwriteCB = QCheckBox(TbGen) self.OverwriteCB.setObjectName("OverwriteCB") self.horizontalLayout_3.addWidget(self.OverwriteCB) self.XilinxLibCB = QCheckBox(TbGen) self.XilinxLibCB.setObjectName("XilinxLibCB") self.horizontalLayout_3.addWidget(self.XilinxLibCB) self.LogAllCB = QCheckBox(TbGen) self.LogAllCB.setObjectName("LogAllCB") self.horizontalLayout_3.addWidget(self.LogAllCB) self.verticalLayout.addLayout(self.horizontalLayout_3) self.TbGenBT = QPushButton(TbGen) self.TbGenBT.setObjectName("TbGenBT") self.verticalLayout.addWidget(self.TbGenBT) self.retranslateUi(TbGen) self.DutBrowseBT_SS(TbGen) self.OupBrowseBT_SS(TbGen) self.SrcAddBT_SS(TbGen) self.FileTW_SS(TbGen) self.SrcRemoveBT_SS(TbGen) self.XilinxLibCB_SS(TbGen) self.TbGenBT_SS(TbGen) QtCore.QMetaObject.connectSlotsByName(TbGen) self.DutFileFlag = False self.TbFileFlag = False self.CurrentTWRowSet = 0 self.CurrentTWType = "" self.OupDirPath = "" self.DutFilePath = "" self.TbPath = '' self.LogAll = False self.XiinxLib = False self.RelativePath = False self.OverWrite = False self.SourceList = [] self.LastPath = '' self.SetCB("Default") self.TbCreateDone = False
def DescribeInstances(ui, AccessKeyID, AccessKeySecret): ui.pushButton.setEnabled(False) ui.pushButton.setText('正在查询') RegionIds = { "cn-hangzhou": "华东1(杭州)", "cn-chengdu": "成都", "cn-qingdao": "华北1(青岛)", "cn-beijing": "华北2(北京)", "cn-huhehaote": "华北5(呼和浩特)", "cn-shanghai": "华东2(上海)", "cn-shenzhen": "华南1(深圳)", "cn-zhangjiakou": "华北3(张家口)", "cn-hongkong": "香港", "ap-southeast-1": "新加坡", "ap-southeast-2": "澳大利亚(悉尼)", "ap-southeast-3": "马来西亚(吉隆坡)", "ap-southeast-5": "印度尼西亚(雅加达)", "ap-northeast-1": "日本(东京)", "us-west-1": "美国(硅谷)", "us-east-1": "美国(弗吉尼亚)", "eu-central-1": "德国(法兰克福)", "me-east-1": "阿联酋(迪拜)", "ap-south-1": "印度(孟买)", "eu-west-1": "英国(伦敦)", "cn-shenzhen-finance-1": "深圳金融云", "cn-shanghai-finance-1": "上海金融云", "cn-north-2-gov-1": "华北 2 阿里政务云1", "cn-heyuan": "华南2(河源)" } for RegionId in RegionIds: client = AcsClient(AccessKeyID, AccessKeySecret, RegionId) # print(RegionId) try: request = DescribeInstancesRequest() request.set_accept_format('json') request.set_PageNumber(1) request.set_PageSize(100) response = client.do_action_with_exception(request) #print(json.loads(response)) except: #print('请检查输入Key与Secret值,或重新执行') ui.pushButton.setText('查询') ui.pushButton.setEnabled(True) return ui, '请检查输入Key与Secret值,或重新执行' if json.loads(response)['TotalCount'] == 0: #print(RegionId) if RegionId == 'cn-heyuan': ui.pushButton.setText('查询') ui.pushButton.setEnabled(True) return ui, '查询完成' else: continue # python2: print(response) # print(str(response, encoding='utf-8')) # item1 = json.loads(response)['Instances']['Instance'][0]['OSName'] PrivateIps = '' PublicIps = '' TotalCount = json.loads(response)['TotalCount'] pages = math.ceil(float(TotalCount / 100)) for page in range(pages): print(page) if page == pages - 1: num = TotalCount % 100 else: num = 100 for i in range(num): row_cnt = ui.tableWidget.rowCount() # 读取行 ui.tableWidget.insertRow(row_cnt) # 创建行 #print(json.loads(response)['Instances']['Instance'][i]['VpcAttributes']['PrivateIpAddress']['IpAddress']) for PrivateIp in json.loads(response)['Instances']['Instance'][ i]['VpcAttributes']['PrivateIpAddress']['IpAddress']: PrivateIps = str(PrivateIp) + ';' # print(PrivateIps) for PublicIp in json.loads(response)['Instances']['Instance'][ i]['PublicIpAddress']['IpAddress']: PublicIps = str(PublicIp) + ';' # print(PrivateIps) for SecurityGroup in json.loads(response)['Instances'][ 'Instance'][i]['SecurityGroupIds']['SecurityGroupId']: SecurityGroups = str(SecurityGroup) + ';' # print(PrivateIps) InstanceId = QTableWidgetItem( json.loads(response)['Instances']['Instance'][i] ['InstanceId']) RegionId = QTableWidgetItem(RegionIds[json.loads( response)['Instances']['Instance'][i]['RegionId']]) HostName = QTableWidgetItem( json.loads(response)['Instances']['Instance'][i] ['HostName']) OSName = QTableWidgetItem( json.loads(response)['Instances']['Instance'][i]['OSName']) InstanceNetworkType = QTableWidgetItem( json.loads(response)['Instances']['Instance'][i]['Status']) PrivateIpAddress = QTableWidgetItem(PrivateIps) PublicIpAddress = QTableWidgetItem(PublicIps) SecurityGroupIds = QTableWidgetItem(SecurityGroup) yunzhushou = QTableWidgetItem('待检测') performance = QTableWidgetItem( str( json.loads(response)['Instances']['Instance'][i] ['Cpu']) + '核处理器\n' + str( json.loads(response)['Instances']['Instance'][0] ['Memory']) + 'MB内存') CreationTime = QTableWidgetItem( json.loads(response)['Instances']['Instance'][i] ['CreationTime']) ExpiredTime = QTableWidgetItem( json.loads(response)['Instances']['Instance'][i] ['ExpiredTime']) ui.tableWidget.setItem(row_cnt, 0, InstanceId) ui.tableWidget.setItem(row_cnt, 1, RegionId) ui.tableWidget.setItem(row_cnt, 2, HostName) ui.tableWidget.setItem(row_cnt, 3, OSName) ui.tableWidget.setItem(row_cnt, 4, InstanceNetworkType) ui.tableWidget.setItem(row_cnt, 5, PrivateIpAddress) ui.tableWidget.setItem(row_cnt, 6, PublicIpAddress) ui.tableWidget.setItem(row_cnt, 7, SecurityGroupIds) ui.tableWidget.setItem(row_cnt, 8, yunzhushou) ui.tableWidget.setItem(row_cnt, 9, performance) ui.tableWidget.setItem(row_cnt, 10, CreationTime) ui.tableWidget.setItem(row_cnt, 11, ExpiredTime)