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)
Esempio n. 2
0
 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()
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 8
0
    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())
Esempio n. 9
0
 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")
Esempio n. 10
0
    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)
Esempio n. 11
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)
Esempio n. 12
0
    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)
Esempio n. 14
0
    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()
Esempio n. 15
0
 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()
Esempio n. 16
0
    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))
Esempio n. 17
0
 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))
Esempio n. 18
0
 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)
Esempio n. 19
0
def loadModel(name_table):
    model = QSqlRelationalTableModel()
    model.setTable(name_table)
    processingModel[name_table](model)
    model.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
    model.select()
    return model
Esempio n. 20
0
    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()
            ))
Esempio n. 21
0
    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 = " "
Esempio n. 22
0
    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
Esempio n. 24
0
    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
Esempio n. 25
0
    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()
Esempio n. 26
0
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
Esempio n. 27
0
    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)
Esempio n. 28
0
    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()
Esempio n. 29
0
    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()
Esempio n. 30
0
 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)