def setup_data(self, event_params_model_data=[], tasks_params_model_data=[], tasks_quantity=0, events_quantity=0, use3mark_system=False): events_params_title = [ 'Нач. событие', 'Кон. событие', 'Оптим.', 'Пессим.' ] if use3mark_system: events_params_title.append('Наиб. вероятное') self.ui.tasksParamsTable.setModel( TableModel(tasks_params_model_data, events_params_title)) self.ui.eventsParamsTable.setModel( TableModel(event_params_model_data, ['Директ. срок'])) self.ui.timeReservesTable.setModel( TableModel([], ['Номера событий', 'Полный резерв времени'])) self.ui.timeReservesTable.resizeColumnsToContents() self.ui.eventsResultsTable.setModel(TableModel([], [])) self.ui.tasksResultsTable.setModel(TableModel([], [])) self.ui.tasksQuantitySpinBox.setValue(tasks_quantity) self.ui.eventsQuantitySpinBox.setValue(events_quantity) if use3mark_system: self.ui.mark3SysRadio.setChecked(True) else: self.ui.mark2SysRadio.setChecked(True)
def __init__(self, db=0, mode=0): super().__init__() layout = QGridLayout() #self.central_widget.setLayout(layout) self.resize(800, self.height()) self.lb_find = QInvisibleButton('Поиск') self.lb_find.setFont(mainfont) self.te_find = QLineEdit() self.te_find.setFont(mainfont) self.pid = 0 layout.addWidget(self.te_find, 0, 0, 1, 1) layout.addWidget(self.lb_find, 0, 0, 1, 1) #if mode: # te.setReadOnly(False) self.lb_find.clicked.connect(self.button_pressed) self.te_find.returnPressed.connect(self.line_edit_return_pressed) self.database = db self.table = QTableView() # Создаём таблицу self.table.doubleClicked.connect(self.viewPerson) #self.table = table self.model = TableModel(self.database.get_peoples()) self.table.setModel(self.model) self.table.resizeRowsToContents() self.table.setSelectionBehavior(QAbstractItemView.SelectRows) #self.table.setSelectionMode(QAbstractItemView.SingleSelection); self.model.dataChanged.connect(self.table.update) layout.addWidget(self.table) self.setLayout(layout)
def __init__(self, parent=None): """ Initialize the AddressWidget. """ super(AddressWidget, self).__init__(parent) self.tableModel = TableModel() self.newAddressTab = NewAddressTab() self.newAddressTab.sendDetails.connect(self.addEntry) self.addTab(self.newAddressTab, "Address Book") self.setupTabs()
def line_edit_return_pressed(self): print(self.te_find.text()) self.model = TableModel(self.database.get_peoples()) self.proxy_model = QSortFilterProxyModel(self.model) self.proxy_model.setSourceModel(self.model) self.proxy_model.setFilterFixedString(self.te_find.text()) self.proxy_model.setFilterKeyColumn(-1) self.table.setModel(self.proxy_model) self.table.update() self.table.resizeRowsToContents() #sender = self.sender() self.te_find.stackUnder(self.lb_find) self.lb_find.setFocus()
def async_init(self): self.database = AllTables('database/objects') self.model = TableModel(self.database.get_peoples()) self.table.setModel(self.model) self.table.resizeRowsToContents() self.table.setSelectionBehavior(QAbstractItemView.SelectRows) self.model.dataChanged.connect(self.table.update) # Работаем с выпадающим меню def openMenu(position): menu = QMenu() relAction = menu.addAction('Связи') menu.addSeparator() albAction = menu.addAction('Альбомы') menu.addSeparator() miniatureAction = menu.addAction('Миниатюра') menu.addSeparator() viewAction = menu.addAction('Просмотреть') addAction = menu.addAction('Добавить') editAction = menu.addAction('Редактировать') delAction = menu.addAction('Удалить') menu.addSeparator() drawGraphAction = menu.addAction('Построить дерево') menu.addSeparator() quitAction = menu.addAction('Выход') action = menu.exec_(self.table.mapToGlobal(position)) if action == viewAction: self.viewPerson() if action == miniatureAction: p = self.get_selected_people() print('p = ' + str(p)) if p is not None: photo_ids = self.database.get_all_photo_ids(p['pid']) path = 0 if photo_ids and type(photo_ids) == type( []) and len(photo_ids) > 0: path = self.database.get_photo_path( p['pid'], photo_ids[0]) gm = GalleryMiniature(p['pid'], path) gm.exec() if action == albAction: p = self.get_selected_people() if p is not None: self.albuns = AlbumViewer(p['pid'], self.database, 1) self.albuns.show() if action == addAction: self.personal_card = PersonalCard( self.database.get_people(self.database.add_people({})), self.database, 1) self.personal_card.exec_() self.line_edit_return_pressed() if action == editAction: p = self.get_selected_people() if p is not None: self.personal_card = PersonalCard(p, self.database, 1) self.personal_card.exec_() self.line_edit_return_pressed() if action == delAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите выполнить удаление?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: select = self.table.selectionModel() if select.hasSelection(): id_list = [ index.data() for index in self.table.selectionModel().selection().indexes() if index.column() == 0 ] print(id_list) self.database.del_people(id_list) self.database.peoples.save() for pid in id_list: print('remove = ' + str(self.model.removeRow(pid))) self.line_edit_return_pressed() if action == relAction: pid = self.get_selected_pid() backup_relations = copy.deepcopy(self.database.relations) self.relation_card = RelationCard(pid, self.database, 2) if not self.relation_card.exec_(): self.database.relations = backup_relations if action == drawGraphAction: print('draw graph') #dialog = MyDialog() #dialog.exec_() #engine = dialog.engine engine = 'dot' self.gd = GraphDrawer(self.database, engine) if action == quitAction: qApp.quit() self.table.setContextMenuPolicy(Qt.CustomContextMenu) self.table.customContextMenuRequested.connect(openMenu)
def __init__(self, parent=None): super(ImageSimilarity, self).__init__(parent) #Build window self.setWindowTitle('Image Similarity Search') self.radio_pca = QRadioButton('PCA') self.radio_pca.setChecked(True) self.radio_deep = QRadioButton('Convolutional') self.button_load_weights = QPushButton('Load Weights') self.button_build_DB = QPushButton('Build Database') self.button_save_DB = QPushButton('Save Database') self.button_load_DB = QPushButton('Load Database') self.button_load_img = QPushButton('Load Image') self.button_search = QPushButton('Search') self.button_search.setEnabled(False) self.button_save_result = QPushButton('Save Result') self.button_save_result.setEnabled(False) self.spinbox = QSpinBox() self.spinbox.setMinimum(-1) self.spinbox.setMaximum(99999) self.spinbox.setValue(0) self.spinboxlabel = QLabel('Max. Distance:') self.spinboxlabel.setAlignment(Qt.AlignRight) self.searchlabel = QLabel('Query Image:') self.countlabel = QLabel('# of Hits:') self.table = QTableView() #self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table.horizontalHeader().setStretchLastSection(True) self.model = TableModel(parent=self) self.table.setModel(self.model) self.table.setSortingEnabled(True) self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) hbox_radio = QHBoxLayout() hbox_radio.addWidget(self.radio_pca) hbox_radio.addWidget(self.radio_deep) hbox_radio.addWidget(self.button_load_weights) hbox_buttons = QHBoxLayout() hbox_buttons.addWidget(self.button_build_DB) hbox_buttons.addWidget(self.button_load_DB) hbox_buttons.addWidget(self.button_save_DB) hbox_buttons.addWidget(self.button_load_img) hbox_buttons.addWidget(self.button_search) hbox_buttons.addWidget(self.spinboxlabel) hbox_buttons.addWidget(self.spinbox) radio_widget = QWidget() radio_widget.setLayout(hbox_radio) button_widget = QWidget() button_widget.setLayout(hbox_buttons) external_layout = QVBoxLayout() external_layout.addWidget(radio_widget) external_layout.addWidget(button_widget) external_layout.addWidget(self.searchlabel) external_layout.addWidget(self.countlabel) external_layout.addWidget(self.table) external_layout.addWidget(self.button_save_result) self.setLayout(external_layout) #Connect signals and slots self.radio_pca.toggled.connect(lambda: self.switch_NN(self.radio_pca)) self.radio_deep.toggled.connect( lambda: self.switch_NN(self.radio_deep)) self.button_load_weights.clicked.connect(self.load_weights) self.button_build_DB.clicked.connect(self.build_DB) self.button_load_DB.clicked.connect(self.load_DB) self.button_save_DB.clicked.connect(self.save_DB) self.button_load_img.clicked.connect(self.load_image) self.button_search.clicked.connect(self.search) self.button_save_result.clicked.connect(self.save_search) #Build neural network self.encoder = build_pca_autoencoder() #See if a database already exists if not os.path.isfile(os.path.join(application_path, 'std_db_pca.db')): self.firstTimeStart(os.path.join(application_path, 'std_db_pca.db')) else: self.database = load_database( os.path.join(application_path, 'std_db_pca.db'))