def __init__(self): super().__init__() container = QWidget() layout = QVBoxLayout() self.search = QLineEdit() self.search.textChanged.connect(self.update_filter) self.table = QTableView() layout.addWidget(self.search) layout.addWidget(self.table) container.setLayout(layout) self.model = QSqlRelationalTableModel(db=db) self.table.setModel(self.model) self.model.setTable("Track") self.model.setRelation(2, QSqlRelation("Album", "AlbumId", "Title")) self.model.setRelation(3, QSqlRelation("MediaType", "MediaTypeId", "Name")) self.model.setRelation(4, QSqlRelation("Genre", "GenreId", "Name")) delegate = QSqlRelationalDelegate(self.table) self.table.setItemDelegate(delegate) self.model.select() self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(container)
def __init__(self, database_name): super().__init__() # uic.loadUi('db_view.ui', self) self.setupUi(self) # self.db_name = database_name # # Подключение БД к таблице отображения # # Подключение через QSqlRelationalTableModel # self.db = QSqlDatabase.addDatabase('QSQLITE') # self.db.setDatabaseName(self.db_name) # self.db.open() self.model = QSqlRelationalTableModel(self) self.model.setTable('goods') self.model.setRelation( 5, QSqlRelation('statuses', 'id_status', 'status_name')) self.model.setRelation( 6, QSqlRelation('goods_types', 'id_goods_type', 'goods_type_name')) self.model.setRelation( 7, QSqlRelation('goods_subtypes', 'id_goods_subtype', 'goods_subtype_name')) self.model.setRelation( 8, QSqlRelation('location', 'id_location', 'location_name')) self.model.setRelation( 9, QSqlRelation('responsibles', 'id_responsible', 'FIO')) self.refresh() self.tableView.doubleClicked.connect(self.table_clicked) # self.tableView.clicked.connect() self.refreshBtn.clicked.connect(self.refresh) self.save_all_btn.clicked.connect(self.submitall)
def createTable(self): """ Set up the model, headers and populate the model. """ self.model = QSqlRelationalTableModel() self.model.setTable('accounts') self.model.setRelation(self.model.fieldIndex('country_id'), QSqlRelation('countries', 'id', 'country')) self.model.setHeaderData(self.model.fieldIndex('id'), Qt.Horizontal, "ID") self.model.setHeaderData(self.model.fieldIndex('employee_id'), Qt.Horizontal, "Employee ID") self.model.setHeaderData(self.model.fieldIndex('first_name'), Qt.Horizontal, "First") self.model.setHeaderData(self.model.fieldIndex('last_name'), Qt.Horizontal, "Last") self.model.setHeaderData(self.model.fieldIndex('email'), Qt.Horizontal, "E-mail") self.model.setHeaderData(self.model.fieldIndex('department'), Qt.Horizontal, "Dept.") self.model.setHeaderData(self.model.fieldIndex('country_id'), Qt.Horizontal, "Country") # populate the model with data self.model.select()
def __init__(self, parent): super(QWidget, self).__init__(parent) self.skrot = QShortcut(QKeySequence(Qt.Key_Return), self) self.naglowki = { 'iddetale': 'ID', 'nr_detalu': 'Detal', 'maszyna': 'Maszyna', "ilosc_m": 'Ilość maszyn', 'ilosc_szt': 'Ilość sztuk na operację', 'nazwa_op': 'Nazwa operacji', 'nr_op': 'Nr operacji', 'tm': 'Czas Tm [s]', 'tp': 'Czas Tp [s]', 'tj': 'Czas Tj [h]', 'norma': 'Norma [szt.]', 'uwagi': 'Uwagi', 'id_uzytkownika': 'Użytkownik' } self.proxy = QSortFilterProxyModel(self) self.parent = parent self.formularz = QGroupBox("Normy") self.lbl_w = QLabel("Wyszukaj") self.edit_w = QLineEdit(self) self.table = QTableView(self) self.btn_odswiez = QPushButton("Odśwież bazę") sciezka = czy_istnieje() self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(sciezka) if self.db.open(): print('Otworzono bazę danych') self.model = QSqlRelationalTableModel(self, self.db) self.initUI()
def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setupUi(self) # toolbar actions self.actionInitialize_Reset.triggered.connect(self.open_init_dialog) # table view self.model = QSqlRelationalTableModel(self, db) self.model.setTable(Server.__tablename__) self.model.select() self.tableView.setModel(self.model) logical_headers = ['ID', 'Server', 'Port', 'Password', 'Encryption', 'Protocol', 'Protocol Params', 'Obfuscation', 'Obfuscation Params', 'Remark', 'Group'] visual_headers = logical_headers.copy() displayed_columns = ['Remark', 'Server', 'Port', 'Group'] for idx, header in enumerate(logical_headers): self.model.setHeaderData(idx, QtCore.Qt.Horizontal, header) for displayed_header in reversed(displayed_columns): idx = visual_headers.index(displayed_header) self.tableView.horizontalHeader().moveSection(idx, 0) visual_headers.pop(idx) visual_headers.insert(0, displayed_header) for idx, header in enumerate(logical_headers): if header not in displayed_columns: self.tableView.horizontalHeader().setSectionHidden(idx, True) self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
def update_table(self) -> None: self.table_model = QSqlRelationalTableModel() tablename = self.combo_box.currentText() self.table_model.setTable(tablename) # foreign key logic if tablename == "goods": self.table_model.setRelation(2, QSqlRelation("units", "id", "unit")) self.table_model.setRelation( 3, QSqlRelation("categories", "id", "name")) elif tablename == "employees": self.table_model.setRelation( 2, QSqlRelation("positions", "id", "position")) elif tablename == "vendors": self.table_model.setRelation( 2, QSqlRelation("ownerships", "id", "ownership")) self.table_model.select() self.table_model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.table_view.setModel(self.table_model) self.table_view.setItemDelegate(QSqlRelationalDelegate( self.table_view)) # define header width self.table_view.horizontalHeader().setStretchLastSection(False) self.table_view.resizeColumnsToContents() self.table_view.horizontalHeader().setMinimumSectionSize(50) self.table_view.horizontalHeader().setStretchLastSection(True)
def __init__(self): super().__init__() self.hasSelection = False # todo self.surveyDatetime = None # init table model self.stampTableModel = QSqlRelationalTableModel() self.stampTableModel.setTable(R.tableName) self.stampTableModel.setEditStrategy(QSqlTableModel.OnFieldChange) self.stampTableModel.setFilter("survey_datetime = None") self.stampTableModel.select() self.stampTableView.setModel(self.stampTableModel) self.stampTableSelectionModel = self.stampTableView.selectionModel() self.stampTableSelectionModel.selectionChanged.connect( self.onStampSelectionChange) # connect buttons self.addStampButton.clicked.connect( lambda ignore, key="-": self.addStampSignal.emit(key)) self.deleteStampButton.clicked.connect(self.deleteButtonAction) self.hotkeyButton.clicked.connect(self.enableHotkeys) # self.recordButton.clicked.connect(self.surveyMode) # hotkeys self.hotkeys = self.initHotkeys() # copy selection to clipboard self.installEventFilter(self)
def initUi(self): self.setObjectName("Main window") self.resize(370, 300) self.setWindowTitle("Материалы") self.btn_add = QPushButton(self) self.btn_add.setObjectName("btn_add") self.btn_add.setText("Добавить") self.btn_delete = QPushButton(self) self.btn_delete.setObjectName("btn_delete") self.btn_delete.setText("Удалить") self.btn_exit = QPushButton(self) self.btn_exit.setObjectName("btn_exit") self.btn_exit.setText("Выход") self.btn_refresh = QPushButton(self) self.btn_refresh.setText("Обновить") self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName('ocenka.db') self.db.open() self.model = QSqlRelationalTableModel(self) self.model.setTable("v_materials") self.model.setEditStrategy(QSqlRelationalTableModel.OnFieldChange) self.model.setJoinMode(QSqlRelationalTableModel.LeftJoin) self.model.setHeaderData(0, Qt.Horizontal, "Идентификатор") self.model.setHeaderData(1, Qt.Horizontal, "Наименование") self.model.setHeaderData(2, Qt.Horizontal, "Ед.изм.") self.model.setHeaderData(3, Qt.Horizontal, "Количество") self.model.setHeaderData(4, Qt.Horizontal, "Стоимость") self.model.setHeaderData(5, Qt.Horizontal, "Сумма") self.model.setHeaderData(6, Qt.Horizontal, "Выбрать") #self.proxyModel = QSortFilterProxyModel(self) #self.proxyModel.setSourceModel(self.model) self.view = QTableView(self) self.view.setSortingEnabled(True) self.view.setModel(self.model) self.view.resizeColumnsToContents() self.view.hideColumn(0) self.view.horizontalHeader().setStretchLastSection(True) #self.view.hideColumn(1) self.view.setItemDelegate(QSqlRelationalDelegate(self.model)) self.model.select() self.layout = QHBoxLayout() self.layout.addWidget(self.btn_add) self.layout.addWidget(self.btn_delete) self.layout.addWidget(self.btn_exit) self.layout.addWidget(self.btn_refresh) vlayout = QVBoxLayout() vlayout.addWidget(self.view) vlayout.addLayout(self.layout) self.setLayout(vlayout) self.show() self.view.clicked.connect(self.findrow) self.btn_add.clicked.connect(self.addrow) self.btn_delete.clicked.connect(lambda: self.model.removeRow(self.view.currentIndex().row())) self.btn_exit.clicked.connect(self.close_event) self.btn_refresh.clicked.connect(lambda: self.model.select())
def __init__(self, connection): self.connection = connection self.model = QSqlRelationalTableModel() self.model.setTable('customnetwork_component') self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.model.setRelation(0, QSqlRelation('component', 'id', 'ticket')) self.model.setRelation(1, QSqlRelation('customnetwork', 'id', 'name')) self.model.select() self.model.setHeaderData(0, Qt.Horizontal, "Ticket")
def loadData(self): self.lineEdit.clear() self.lineEdit.setFocus() # สร้าง model เรียก data จาก database # ใช้ QSqlRelationalTableModel สำหรับตารางที่มีคีย์นอก self.model = QSqlRelationalTableModel() self.model.setTable('queue') self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.setHeaderData(0, Qt.Horizontal, 'ID') self.model.setHeaderData(1, Qt.Horizontal, "รายชื่อ") self.model.setHeaderData(2, Qt.Horizontal, "เวลาเพิ่มคิว") self.model.setHeaderData(3, Qt.Horizontal, "เวลาเรียกคิว") self.model.setHeaderData(4, Qt.Horizontal, "สถาณะคิว") self.model.setHeaderData(5, Qt.Horizontal, "ปลายทาง") self.model.setHeaderData(6, Qt.Horizontal, "Option") # ให้ column#5 เป็นคีย์นอกดึงตารางนอกมาแสดง self.model.setRelation( 5, QSqlRelation("destination", "des_id", "des_name")) # เรียกใช้ model เรียกใช้ได้จากทุกที่ใน class ไม่ต้องเรียก loadData() self.model.select() # ให้ tableView เลือก data จาก model ไปแสดง self.tableView.setModel(self.model) self.tableView.setItemDelegate(QSqlRelationalDelegate(self.tableView)) self.tableView.setColumnHidden(0, True) self.tableView.setCornerButtonEnabled(False) self.tableView.setSortingEnabled(True) self.tableView.setColumnWidth(1, 210) # เรียก fetchData เพื่อ fetch data เข้ามาใน model ให้หมด self.fetchData() # เมื่อ click ให้เลือกทั้งแถว self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) # สร้าง model เรียกตาราง destination แล้วยัดเข้า combobox self.desModel = QSqlQueryModel() selectQuery = QSqlQuery() selectQuery.prepare('SELECT des_name FROM destination') # print('QUERY = ' + str(selectQuery.lastQuery())) if selectQuery.exec(): self.desModel.setQuery(selectQuery) # print('SELECT des_name COMPLETE') self.comboBox.setModel(self.desModel) else: print('SELECT FALSE = ' + selectQuery.lastError().text()) # สร้าง obj ของ destination setting ไว้รอเรียก self.desDialog = QtWidgets.QDialog() self.ui = destination2.Ui_Dialog() self.ui.setupUi(self.desDialog) self.tableView.selectRow(0)
def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("QTableView Example") self.resize(800, 600) # Set up the model self.model = QSqlRelationalTableModel(self) self.model.setTable("queue") self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.setHeaderData(0, Qt.Horizontal, "ID") self.model.setHeaderData(1, Qt.Horizontal, "Number") self.model.setHeaderData(2, Qt.Horizontal, "Enter Time") self.model.setHeaderData(3, Qt.Horizontal, "Call Time") self.model.setHeaderData(4, Qt.Horizontal, "Status") self.model.setHeaderData(5, Qt.Horizontal, "Destination") # ใช้ QSqlRelation อ่านคีย์นอกจากในตาราง queue แล้ว maps เข้ากับตาราง destination เลือก index กับ text ที่ต้องการแสดงในตาราง queue self.model.setRelation( 5, QSqlRelation("destination", "des_id", "des_name")) self.model.select() # Set up the view self.view = QTableView() self.view.setModel(self.model) self.view.setItemDelegate(QSqlRelationalDelegate(self.view)) self.view.setColumnHidden(0, True) self.view.setCornerButtonEnabled(False) #self.view.setEditTriggers(QAbstractItemView()) #self.headerView = QHeaderView() #self.view.setHorizontalHeader() #print(str(self.view.editTriggers())) self.view.resizeColumnsToContents() # self.cbxModel = QSqlQueryModel(self) # self.cbxModel.setQuery = "SELECT des_name FROM destination" # self.cbxModel.query() # สร้าง comboboxmodel ดึงข้อมูลจาก ex1.destination #self.cbxModel = QSqlTableModel(self) #self.cbxModel.setTable("destination") #self.cbxModel.select() # สร้าง comboboxview #self.cbxView = QComboBox() #self.cbxView.setModel(self.cbxModel) # เลือก column ที่จะมาแสดง #self.cbxView.setModelColumn(1) # วาด comboboxview ลงบน tableview ติดปัญหา comboboxview จะวาดลงใน record สุดท้ายเสมอ # for i in range(self.model.rowCount()): # i = self.view.model().index(1, 5) # self.view.setIndexWidget(i,self.cbxView) self.setCentralWidget(self.view)
def __openTable(self): ##打开数据表 self.tabModel = QSqlRelationalTableModel(self, self.DB) #数据表 self.tabModel.setTable("studInfo") #设置数据表 self.tabModel.setEditStrategy(QSqlTableModel.OnManualSubmit ) #数据保存方式,OnManualSubmit , OnRowChange self.tabModel.setSort(self.tabModel.fieldIndex("studID"), Qt.AscendingOrder) #排序 if (self.tabModel.select() == False): #查询数据失败 QMessageBox.critical( self, "错误信息", "打开数据表错误,错误信息\n" + self.tabModel.lastError().text()) return self.__getFieldNames() #获取字段名和序号 ##字段显示名 self.tabModel.setHeaderData(self.fldNum["studID"], Qt.Horizontal, "学号") self.tabModel.setHeaderData(self.fldNum["name"], Qt.Horizontal, "姓名") self.tabModel.setHeaderData(self.fldNum["gender"], Qt.Horizontal, "性别") self.tabModel.setHeaderData(self.fldNum["departID"], Qt.Horizontal, "学院") self.tabModel.setHeaderData(self.fldNum["majorID"], Qt.Horizontal, "专业") ## 设置代码字段的查询关系数据表 self.tabModel.setRelation(self.fldNum["departID"], QSqlRelation("departments", "departID", "department")) #学院 self.tabModel.setRelation(self.fldNum["majorID"], QSqlRelation("majors", "majorID", "major")) #专业 self.selModel = QItemSelectionModel(self.tabModel) #关联选择模型 ##selModel当前项变化时触发currentChanged信号 self.selModel.currentChanged.connect(self.do_currentChanged) ##选择行变化时 ## self.selModel.currentRowChanged.connect(self.do_currentRowChanged) self.ui.tableView.setModel(self.tabModel) #设置数据模型 self.ui.tableView.setSelectionModel(self.selModel) #设置选择模型 delgate = QSqlRelationalDelegate(self.ui.tableView) self.ui.tableView.setItemDelegate(delgate) #为关系型字段设置缺省代理组件 self.tabModel.select() #必须重新查询数据 ##更新actions和界面组件的使能状态 self.ui.actOpenDB.setEnabled(False) self.ui.actRecAppend.setEnabled(True) self.ui.actRecInsert.setEnabled(True) self.ui.actRecDelete.setEnabled(True) self.ui.actFields.setEnabled(True)
def __init__(self): super().__init__() self.setObjectName("Main window") self.setGeometry(QRect(500, 300, 430, 300)) self.setWindowTitle("Транспортное средство") self.btn_add = QPushButton(self) self.btn_add.setObjectName("btn_add") self.btn_add.setText("Добавить") self.btn_delete = QPushButton(self) self.btn_delete.setObjectName("btn_delete") self.btn_delete.setText("Удалить") self.btn_exit = QPushButton(self) self.btn_exit.setObjectName("btn_exit") self.btn_exit.setText("Выход") self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName('ocenka.db') self.model = QSqlRelationalTableModel(self) self.model.setTable('car_data') self.model.setEditStrategy(QSqlRelationalTableModel.OnFieldChange) self.model.select() self.model.setHeaderData(0, Qt.Horizontal, "Номер ТС") self.model.setHeaderData(1, Qt.Horizontal, "Марка автомобиля") self.model.setHeaderData(2, Qt.Horizontal, "Регистрационный номер") self.model.setHeaderData(3, Qt.Horizontal, "Цвет") self.model.setHeaderData(4, Qt.Horizontal, "Пробег") self.model.setHeaderData(5, Qt.Horizontal, "Год выпуска") self.model.setHeaderData(6, Qt.Horizontal, "Страна производства") self.model.setHeaderData(7, Qt.Horizontal, "Место использования") self.model.setHeaderData(8, Qt.Horizontal, "Страна импортёр") self.model.setHeaderData(9, Qt.Horizontal, "Серия и ПТС") self.model.setHeaderData(10, Qt.Horizontal, "VIN") self.model.setHeaderData(11, Qt.Horizontal, "Номер двигателя") self.model.setHeaderData(12, Qt.Horizontal, "Номер кузова") self.view1 = self.createView("Table Model (View 1)", self.model) self.query = QSqlQuery(self.db) self.query.exec_("PRAGMA Foreign_keys = ON") layout = QHBoxLayout() layout.addWidget(self.btn_add) layout.addWidget(self.btn_delete) layout.addWidget(self.btn_exit) vlayout = QVBoxLayout() vlayout.addWidget(self.view1) vlayout.addLayout(layout) self.setLayout(vlayout) self.show() self.view1.clicked.connect(self.findrow) self.btn_add.clicked.connect(self.addrow) self.btn_delete.clicked.connect( lambda: self.model.removeRow(self.view1.currentIndex().row())) self.btn_exit.clicked.connect(self.close)
def setTable(self): self.search = QLineEdit() self.search.textChanged.connect(self.setFilter) self.table = QTableView() self.model = QSqlRelationalTableModel(db=db) self.model.setTable('album') self.table.setModel(self.model) index = self.model.fieldIndex("Title") self.model.setSort(index, Qt.DescendingOrder) self.model.setRelation(2, QSqlRelation("artist", "ArtistId","Name")) self.model.select()
def tablemodel(self): # self.model=QSqlTableModel() # self.model.setRelation(4,QSqlRelation("TEST","id_test","method_name")) self.model = QSqlRelationalTableModel() self.model.setTable(self.sqltablename) self.model.setHeaderData(0, Qt.Horizontal, '用例ID') self.model.setHeaderData(1, Qt.Horizontal, '用例名称') self.model.setHeaderData(2, Qt.Horizontal, '脚本名称') self.model.setHeaderData(3, Qt.Horizontal, '执行状态') self.model.setHeaderData(4, Qt.Horizontal, '结论') self.model.setHeaderData(5, Qt.Horizontal, '时间') self.model.setHeaderData(6, Qt.Horizontal, '操作') self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.select()
def show_table(self): self.table_model = QSqlRelationalTableModel() if self.table_name: table = self.table_name else: table = [str(self.ui.tablesListView.item(i).text()) for i in range(self.ui.tablesListView.count())][0] self.table_model.setTable(table) self.table_model.select() self.table_model.setEditStrategy(QSqlTableModel.OnManualSubmit) view = self.ui.tableViewerTableView view.setModel(self.table_model) view.setItemDelegate(QSqlRelationalDelegate(view))
def show_table(self): self.table_model = QSqlRelationalTableModel() table = self.ui.comboBox.currentText() if table == 'goods': self.create_goods_table_model() elif table == 'employees': self.create_employees_table_model() else: self.table_model.setTable(table) self.table_model.select() self.table_model.setEditStrategy(QSqlTableModel.OnManualSubmit) view = self.ui.tableView view.setModel(self.table_model) view.setItemDelegate(QSqlRelationalDelegate(view))
def __init__(self, db_name, table_name): super().__init__() # uic.loadUi('tablesEditForm.ui', self) self.setupUi(self) self.close_btn.clicked.connect(self.close) self.delete_btn.clicked.connect(self.delete_item) self.add_btn.clicked.connect(self.add_item) self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(db_name) self.db.open() self.db_model = QSqlRelationalTableModel(self) self.db_model.setTable(table_name) self.db_model.select() self.tableView.setModel(self.db_model)
def loadModel(name_table): model = QSqlRelationalTableModel() model.setTable(name_table) processingModel[name_table](model) model.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit) model.select() return model
def __init__(self, db): self.model = QSqlRelationalTableModel(db=db) self.model.setTable('balance') self.model.setEditStrategy(QSqlRelationalTableModel.OnFieldChange) self.model.setRelation(1, QSqlRelation('items', 'id', 'name')) self.model.setRelation(2, QSqlRelation('categories', 'id', 'name')) self.model.setRelation(4, QSqlRelation('currencies', 'id', 'name')) self.model.setRelation(5, QSqlRelation('users', 'id', 'full_name')) self.model.setRelation(6, QSqlRelation('places', 'id', 'name')) self.model.setRelation(8, QSqlRelation('measures', 'id', 'short')) self.model.setHeaderData(0, Qt.Horizontal, QtGui.qApp.tr("ID")) self.model.setHeaderData(1, Qt.Horizontal, QtGui.qApp.tr("Item")) self.model.setHeaderData(2, Qt.Horizontal, QtGui.qApp.tr("Category")) self.model.setHeaderData(3, Qt.Horizontal, QtGui.qApp.tr("Cost")) self.model.setHeaderData(4, Qt.Horizontal, QtGui.qApp.tr("Currency")) self.model.setHeaderData(5, Qt.Horizontal, QtGui.qApp.tr("By whom")) self.model.setHeaderData(6, Qt.Horizontal, QtGui.qApp.tr("Where")) self.model.setHeaderData(7, Qt.Horizontal, QtGui.qApp.tr("Qty/Amount")) self.model.setHeaderData(8, Qt.Horizontal, QtGui.qApp.tr("Units")) self.model.setHeaderData(9, Qt.Horizontal, QtGui.qApp.tr("is spending")) self.model.setHeaderData(10, Qt.Horizontal, QtGui.qApp.tr("Note")) self.model.setHeaderData(11, Qt.Horizontal, QtGui.qApp.tr("Date and " "Time")) self.model.removeColumn(12) self.model.removeColumn(13) if not self.model.select(): _log("Table model selection error[%s]: %s" % ( self.model.lastError().type(), self.model.lastError().text() ))
def __init__(self): super(DBMan, self).__init__() self.products_model = QSqlRelationalTableModel() self.buyer_model = QSqlRelationalTableModel() self.sales_model = QSqlRelationalTableModel() self.bill_model = QSqlRelationalTableModel() self.check_stock = 0 self.last_added = " "
def addNewSharding(self, siteNumber): self.initalLoad = True self.siteNumber = siteNumber # get new sharding number query = QSqlQuery(self.dbm.db) qryStr = "SELECT CASE WHEN max(begehung) IS NULL THEN 1 ELSE max(begehung)+1 END begehungNeu FROM begehung WHERE fundortnummer='{0}'".format( self.siteNumber) query.exec_(qryStr) query.first() self.shardingNumber = query.value(0) self.model = QSqlRelationalTableModel(self, self.dbm.db) self.model.setTable("begehung") self.model.setFilter("fundortnummer='{0}'".format(self.siteNumber)) res = self.model.select() #self.model.submitAll() while (self.model.canFetchMore()): self.model.fetchMore() row = self.model.rowCount() #QMessageBox.information(None, "begehung", "{0}".format(row)) self.model.insertRow(row) #QMessageBox.information(None, "begehung", "{0}".format(self.model.rowCount())) self.setupMapper() self.mapper.toLast() self.addMode = True self.startEditMode() # self.mapper.submit() # self.model.insertRow(row) # self.mapper.setCurrentIndex(row) self.uiSiteNumberEdit.setText(self.siteNumber) self.uiShardingNumberEdit.setText(str(self.shardingNumber)) now = QDate.currentDate() self.uiShardingDate.setDate(now) self.setKgNameAndCode() #QMessageBox.warning(None, self.tr(u"Neu"), self.tr(u"{0}, {1}".format(siteNumber,nn))) self.initalLoad = False
def loadTable(self, table): # check if table in db if not DbHasTable(self.dbm.db, table): return False self.table = table self.dbm.createTriggerForSystemTable(table) # TODO: if returns FALSE then deactivate editing Capabilites + Wanring self.uiSysTableLbl.setText(self.table) self.model = QSqlRelationalTableModel(self, self.dbm.db) self.model.setTable(table) self.model.select() #rc = self.model.rowCount() while (self.model.canFetchMore()): self.model.fetchMore() #rc = self.model.rowCount() self.uiSystemTableV.setModel(self.model) self.uiSystemTableV.selectionModel().selectionChanged.connect( self.onSelectionChanged) self.onSelectionChanged() # dummyRecord holds field structure! dummyRecord = self.model.record() editors = [] for fIdx in range(dummyRecord.count()): field = dummyRecord.field(fIdx) if field.name() != "ogc_fid": editors.append({ 'name': field.name(), 'type': field.type(), 'lineEdit': QLineEdit(), 'default': None }) # init input dialog self.inputDialog = APISInputDialog(editors, dummyRecord, parent=self) self.uiAddBtn.clicked.connect(self.addRecord) self.uiEditBtn.clicked.connect( self.editRecord ) # in EditMode: load current Value; try to update (but with trigger: only possible to update if not in use!!!) self.uiRemoveBtn.clicked.connect(self.removeRecord) return True
def openSharding(self, siteNumber, shardingNumber): self.initalLoad = True self.siteNumber = siteNumber self.shardingNumber = shardingNumber #QMessageBox.warning(None, self.tr(u"Neu"), self.tr(u"{0}, {1}".format(siteNumber, shardingNumber))) # Setup sharding model self.model = QSqlRelationalTableModel(self, self.dbm.db) self.model.setTable("begehung") self.model.setFilter("fundortnummer='{0}' AND begehung='{1}'".format( self.siteNumber, self.shardingNumber)) res = self.model.select() self.setupMapper() self.mapper.toFirst() self.setKgNameAndCode() self.initalLoad = False
def devices_table_UI(self): conn = sqlite3.connect("database.db") c = conn.cursor() c.execute( "CREATE TABLE IF NOT EXISTS devices(id INTEGER PRIMARY KEY AUTOINCREMENT, mac_address TEXT, os_version TEXT, architecture TEXT, locale TEXT, timezone TEXT, last_update TEXT)" ) c.close() self.devices_model = QSqlRelationalTableModel(db=createConnection()) self.devices_model.setTable('devices') self.devices_model.select() # self.drivers_table.setEditTriggers(QAbstractItemView.CurrentChanged) self.devices_table.setModel(self.devices_model) self.devices_table.hideColumn(self.devices_model.fieldIndex('id')) # Делаем ресайз колонок по содержимому self.devices_table.resizeColumnsToContents()
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setupUi(self) # toolbar actions self.actionInitialize_Reset.triggered.connect(self.open_init_dialog) # table view self.model = QSqlRelationalTableModel(self, db) self.model.setTable(Server.__tablename__) self.model.select() self.tableView.setModel(self.model) logical_headers = ['ID', 'Server', 'Port', 'Password', 'Encryption', 'Protocol', 'Protocol Params', 'Obfuscation', 'Obfuscation Params', 'Remark', 'Group'] visual_headers = logical_headers.copy() displayed_columns = ['Remark', 'Server', 'Port', 'Group'] for idx, header in enumerate(logical_headers): self.model.setHeaderData(idx, QtCore.Qt.Horizontal, header) for displayed_header in reversed(displayed_columns): idx = visual_headers.index(displayed_header) self.tableView.horizontalHeader().moveSection(idx, 0) visual_headers.pop(idx) visual_headers.insert(0, displayed_header) for idx, header in enumerate(logical_headers): if header not in displayed_columns: self.tableView.horizontalHeader().setSectionHidden(idx, True) self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) def updateTableView(self): self.model.select() @staticmethod def open_init_dialog(): qApp.exit(EXIT_CODE_RESET) def open_debug_terminal(self): pass def add_server(self, server: dict): pass def bulk_add_server(self, servers: [dict]): pass def update_server(self, server: Server): pass def remove_server(self, server: Server): pass
def __openTable(self): self.tabModel = QSqlRelationalTableModel(self, self.DB) self.tabModel.setTable("studInfo") self.tabModel.setEditStrategy(QSqlTableModel.OnManualSubmit) self.tabModel.setSort(self.tabModel.fieldIndex("studID"), Qt.AscendingOrder) if (self.tabModel.select() == False): QMessageBox.critical( self, "错误信息", "打开数据表错误,错误信息\n" + self.tabModel.lastError().text()) return self.__getFieldNames() self.tabModel.setHeaderData(self.fldNum["studID"], Qt.Horizontal, "学号") self.tabModel.setHeaderData(self.fldNum["name"], Qt.Horizontal, "姓名") self.tabModel.setHeaderData(self.fldNum["gender"], Qt.Horizontal, "性别") self.tabModel.setHeaderData(self.fldNum["departID"], Qt.Horizontal, "学院") self.tabModel.setHeaderData(self.fldNum["majorID"], Qt.Horizontal, "专业") self.tabModel.setRelation( self.fldNum["departID"], QSqlRelation("departments", "departID", "department")) self.tabModel.setRelation(self.fldNum["majorID"], QSqlRelation("majors", "majorID", "major")) self.selModel = QItemSelectionModel(self.tabModel) self.selModel.currentChanged.connect(self.do_currentChanged) self.ui.tableView.setModel(self.tabModel) self.ui.tableView.setSelectionModel(self.selModel) delgate = QSqlRelationalDelegate(self.ui.tableView) self.ui.tableView.setItemDelegate(delgate) self.tabModel.select() self.ui.actOpenDB.setEnabled(False) self.ui.actRecAppend.setEnabled(True) self.ui.actRecInsert.setEnabled(True) self.ui.actRecDelete.setEnabled(True) self.ui.actFields.setEnabled(True)
def __init__(self, parent, db): super(QWidget, self).__init__(parent) self.parent = parent self.lbl_imie = QLabel() self.lbl_nazwisko = QLabel() self.view_p = QTableView() self.view_pu = QTableView() self.view_u = QTableView() self.proxy_p = QSortFilterProxyModel(self) self.proxy_pu = QSortFilterProxyModel(self) self.proxy_u = QSortFilterProxyModel(self) self.id_pracownik = -1 # Parametry połączenia z bazą self.model_p = QSqlTableModel(self, db) self.model_pu = QSqlRelationalTableModel(self, db) self.model_u = QSqlTableModel(self, db) self.initUI()
def __init__(self) -> None: super().__init__() self.db = QSqlDatabase.addDatabase("QSQLITE") self.dbpath = DEFAULT_DATABASE_PATH self.qmainwindow = QtWidgets.QMainWindow() # define buttons vehaviour self.button_actions: Dict[str, QtWidgets.QAction] = {} self.define_buttons() # UI variables self.label = QtWidgets.QLabel() self.combo_box = QtWidgets.QComboBox() self.table_model = QSqlRelationalTableModel() self.table_view = QtWidgets.QTableView() # create window and show it self.draw() self.qmainwindow.show()
def show_table(self): self.table_model = QSqlRelationalTableModel() table = self.ui.comboBox.currentText() if table == 'Товары': self.create_goods_table_model() elif table == 'Персонал': self.create_employees_table_model() else: if table == 'Единица измерения': table = 'units' elif table == 'Категории': table = 'categories' elif table == 'Должности': table = 'positions' elif table == 'Поставщики': table = 'vendors' self.table_model.setTable(table) self.table_model.select() self.table_model.setEditStrategy(QSqlTableModel.OnManualSubmit) view = self.ui.tableView view.setModel(self.table_model) view.setItemDelegate(QSqlRelationalDelegate(view))
def __init__(self): super().__init__() # init table model TODO: make vars private self.surveyTableModel = QSqlRelationalTableModel() self.surveyTableModel.setTable(R.tableName) self.surveyTableModel.setEditStrategy(QSqlTableModel.OnRowChange) self.surveyTableModel.select() self.surveyTableView.setModel(self.surveyTableModel) self.surveyTableSelectionModel = self.surveyTableView.selectionModel() self.surveyTableSelectionModel.selectionChanged.connect( self.onSurveySelectionChange) self.surveyTableView.horizontalHeader().sortIndicatorChanged.connect( self.onSurveySelectionChange) # TODO # connect buttons self.addSurveyButton.clicked.connect(self.addSurveySignal.emit) self.editSurveyButton.clicked.connect(self.editSurveySignal.emit) self.deleteSurveyButton.clicked.connect(self.deleteSurveyButtonAction) self.loadAudioButton.clicked.connect(self.loadSurveyAudioSignal.emit) self.combineButton.clicked.connect(self.combineSignal.emit)