Ejemplo n.º 1
0
 def create_goods_table_model(self):
     self.table_model.setTable('goods')
     self.table_model.setRelation(2, QSqlRelation('units', 'unit_id',
                                                  'unit'))
     self.table_model.setRelation(
         3, QSqlRelation('categories', 'category_id', 'category_name'))
     self.table_model.select()
Ejemplo 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)
Ejemplo n.º 3
0
def processingModelDoses(model, set_relation=True):
    if set_relation:
        model.setRelation(
            1, QSqlRelation(QDataBase.tableIngredients, 'Id', 'Name'))
        model.setRelation(4, QSqlRelation(QDataBase.tableUnits, 'Id', 'Name'))
    for i in range(model.columnCount()):
        model.setHeaderData(i, QtCore.Qt.Horizontal, QDataBase.columnsDoses[i])
Ejemplo n.º 4
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)
Ejemplo n.º 5
0
 def __init__(self):
     super().__init__()
     self.setWindowTitle('Автооценка')
     self.model.setTable('auto_marks_data')
     self.model.setRelation(4, QSqlRelation("car_data", "car_data_id", "car_mark"))
     self.model.setRelation(5, QSqlRelation("car_data", "car_data_id", "car_reg_number"))
     self.model.setRelation(6, QSqlRelation("counter_agents", "counter_agent_id", "manager"))
     self.model.setRelation(7, QSqlRelation("counter_agents", "counter_agent_id", "manager"))
     self.model.setRelation(8, QSqlRelation('workers_info', 'worker_info_id', 'FIO'))
     self.model.select()
     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.setHeaderData(7, Qt.Horizontal, "Заказчик")
     self.model.setHeaderData(8, Qt.Horizontal, "Оценщик")
     self.view.resizeColumnsToContents()
     self.view.setItemDelegateForColumn(4, QSqlRelationalDelegate(self.view))
     self.view.setItemDelegateForColumn(6, QSqlRelationalDelegate(self.view))
     self.view.setItemDelegateForColumn(7, QSqlRelationalDelegate(self.view))
     self.view.setItemDelegateForColumn(8, QSqlRelationalDelegate(self.view))
     self.view.setItemDelegate(ProductDelegate(1))
     self.view.setItemDelegateForColumn(5, QSqlRelationalDelegate(self.view))
	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)
Ejemplo n.º 7
0
def processingModelSales(model, set_relation=True):
    if set_relation:
        model.setRelation(1, QSqlRelation(QDataBase.tablePasties, 'Id',
                                          'Name'))
        model.setRelation(3,
                          QSqlRelation(QDataBase.tableCustomers, 'Id', 'Name'))
    for i in range(model.columnCount()):
        model.setHeaderData(i, QtCore.Qt.Horizontal, QDataBase.columnsSales[i])
Ejemplo n.º 8
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")
Ejemplo n.º 9
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 initializeModel(model):
    model.setTable('employee')

    model.setEditStrategy(QSqlTableModel.OnManualSubmit)
    model.setRelation(2, QSqlRelation('city', 'id', 'name'))
    model.setRelation(3, QSqlRelation('country', 'id', 'name'))

    model.setHeaderData(0, Qt.Horizontal, "ID")
    model.setHeaderData(1, Qt.Horizontal, "Name")
    model.setHeaderData(2, Qt.Horizontal, "City")
    model.setHeaderData(3, Qt.Horizontal, "Country")

    model.select()
Ejemplo n.º 11
0
    def tabela(self):
        self.model.setTable('kolnierze')
        self.model.setRelation(
            12, QSqlRelation('uzytkownicy', 'iduzytkownicy', 'nazwa_uz'))
        # Za zmianę w bazie odpowiada OnFieldChange
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)

        # Ustawianie nagłówków
        ilosc_kolumn = self.model.columnCount()
        for i in range(ilosc_kolumn):
            nazwa_kolumn = self.model.headerData(i, Qt.Horizontal)
            self.model.setHeaderData(i, Qt.Horizontal,
                                     self.naglowki[nazwa_kolumn])
        self.model.select()

        # Odpowiada za edycję pojednynczym kliknieciem
        if self.odczyt():
            self.table.setEditTriggers(QAbstractItemView.AllEditTriggers)
        else:
            self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.table.setSelectionMode(QAbstractItemView.SingleSelection)
        self.table.verticalHeader().setVisible(False)
        self.table.setSortingEnabled(True)
        self.table.resizeColumnsToContents()
        self.table.setModel(self.model)
        self.table.setAlternatingRowColors(True)
        self.table.resizeColumnsToContents()
Ejemplo n.º 12
0
    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 create_goods_table_model(self):
     self.table_model.setTable('goods')
     self.table_model.setRelation(
         2, QSqlRelation('units', 'unit_id', 'unit_name'))
     self.table_model.setRelation(
         3, QSqlRelation('categories', 'category_id', 'category_name'))
     self.table_model.setRelation(
         4, QSqlRelation('vendors', 'vendor_id', 'vendor_name'))
     self.table_model.setHeaderData(1, QtCore.Qt.Horizontal,
                                    'Название продукта')
     self.table_model.setHeaderData(2, QtCore.Qt.Horizontal,
                                    'Единица измерения')
     self.table_model.setHeaderData(3, QtCore.Qt.Horizontal,
                                    'Категория продукта')
     self.table_model.setHeaderData(4, QtCore.Qt.Horizontal, 'Поставщик')
     self.table_model.select()
Ejemplo n.º 14
0
    def set_relation(self, column: int, related_table: str,
                     related_id_field: str, related_display_field: str):
        """ Set relation so that Qt can show field values instead of ids """

        self.setRelation(
            column,
            QSqlRelation(related_table, related_id_field,
                         related_display_field))
 def create_employees_table_model(self):
     self.table_model.setTable('employees')
     self.table_model.setRelation(
         2, QSqlRelation('positions', 'position_id', 'position_name'))
     self.table_model.setHeaderData(1, QtCore.Qt.Horizontal,
                                    'ФИО сотрудника')
     self.table_model.setHeaderData(2, QtCore.Qt.Horizontal, 'Должность')
     self.table_model.select()
Ejemplo n.º 16
0
 def relational_mapping(self, *args):
     """
     relation : [table, id, reference, nbr_col, name_col]
     """
     for relation in args:
         rel = QSqlRelation(relation[0], relation[1], relation[2])
         self.setRelation(relation[3], rel)
         self.setHeaderData(relation[3], Qt.Horizontal, relation[4])
     self.select()
Ejemplo n.º 17
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)
Ejemplo n.º 18
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)
Ejemplo n.º 19
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)
Ejemplo n.º 20
0
 def __init__(self):
     super().__init__()
     self.setWindowTitle('Калькуляция')
     self.model.setTable('calculation')
     self.model.setRelation(
         1, QSqlRelation('auto_marks_data', 'am_data_id', 'case_number'))
     self.model.setRelation(
         2, QSqlRelation('materials', 'materials_id', 'material'))
     self.model.setRelation(
         3, QSqlRelation('spare_parts', 'spare_id', 'spare_name'))
     self.model.setRelation(
         4, QSqlRelation('works', 'work_id', 'name_of_work'))
     self.model.select()
     self.model.setHeaderData(0, Qt.Horizontal, "Идентификатор")
     self.model.setHeaderData(1, Qt.Horizontal, "Номер дела")
     self.model.setHeaderData(2, Qt.Horizontal, "Hаименование материала")
     self.model.setHeaderData(3, Qt.Horizontal, "Наименование запчасти")
     self.model.setHeaderData(4, Qt.Horizontal, "Наименование работ")
     self.view.resizeColumnsToContents()
     self.view.hideColumn(0)
     self.view.hideColumn(5)
Ejemplo n.º 21
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()
Ejemplo n.º 22
0
    def __init__(self, modeldb):
        """Initialize the RacerTableModel instance."""
        super().__init__(modeldb)

        self.remote = None

        self.create_table()

        self.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.setTable(self.TABLE)

        # We need the field index so often, just save them here since they never change.
        self.id_column = self.fieldIndex(self.ID)
        self.bib_column = self.fieldIndex(self.BIB)
        self.first_name_column = self.fieldIndex(self.FIRST_NAME)
        self.last_name_column = self.fieldIndex(self.LAST_NAME)
        self.field_column = self.fieldIndex(self.FIELD)
        self.category_column = self.fieldIndex(self.CATEGORY)
        self.team_column = self.fieldIndex(self.TEAM)
        self.age_column = self.fieldIndex(self.AGE)
        self.start_column = self.fieldIndex(self.START)
        self.finish_column = self.fieldIndex(self.FINISH)
        self.status_column = self.fieldIndex(self.STATUS)
        self.metadata_column = self.fieldIndex(self.METADATA)

        self.setHeaderData(self.bib_column, Qt.Horizontal, 'Bib')
        self.setHeaderData(self.first_name_column, Qt.Horizontal, 'First Name')
        self.setHeaderData(self.last_name_column, Qt.Horizontal, 'Last Name')
        self.setHeaderData(self.field_column, Qt.Horizontal, 'Field')
        self.setHeaderData(self.category_column, Qt.Horizontal, 'Cat')
        self.setHeaderData(self.team_column, Qt.Horizontal, 'Team')
        self.setHeaderData(self.age_column, Qt.Horizontal, 'Age')
        self.setHeaderData(self.start_column, Qt.Horizontal, 'Start')
        self.setHeaderData(self.finish_column, Qt.Horizontal, 'Finish')
        self.setHeaderData(self.status_column, Qt.Horizontal, 'Status')
        self.setHeaderData(self.metadata_column, Qt.Horizontal, 'Metadata')

        # After this relation is defined, the field name becomes
        # "field_name_2" (FIELD_ALIAS).
        self.setRelation(
            self.field_column,
            QSqlRelation(FieldTableModel.TABLE, FieldTableModel.ID,
                         FieldTableModel.NAME))

        self.select()
Ejemplo n.º 23
0
    def createTable(self):
        """
        Create the table using model/view architecture.
        """
        # Create the model
        model = QSqlRelationalTableModel()
        model.setTable('accounts')
        # Set up relationship for foreign keys
        model.setRelation(model.fieldIndex('country_id'),
                          QSqlRelation('countries', 'id', 'country'))

        table_view = QTableView()
        table_view.setModel(model)
        table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        # Populate the model with data
        model.select()

        # Main layout
        main_v_box = QVBoxLayout()
        main_v_box.addWidget(table_view)
        self.setLayout(main_v_box)
Ejemplo n.º 24
0
    def tabela(self):
        self.model.setTable('detale')
        self.model.setRelation(
            12, QSqlRelation('uzytkownicy', 'iduzytkownicy', 'nazwa_uz'))
        # Za zmianę w bazie odpowiada OnFieldChange
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)

        # Ustawianie nagłówków
        ilosc_kolumn = self.model.columnCount()
        for i in range(ilosc_kolumn):
            nazwa_kolumn = self.model.headerData(i, Qt.Horizontal)
            self.model.setHeaderData(i, Qt.Horizontal,
                                     self.naglowki[nazwa_kolumn])
        self.model.select()

        # Odpowiada za edycję pojednynczym kliknieciem
        '''
        Constant    Value   Description
        QAbstractItemView::NoEditTriggers   0   No editing possible.
        QAbstractItemView::CurrentChanged   1   Editing start whenever current item changes.
        QAbstractItemView::DoubleClicked    2   Editing starts when an item is double clicked.
        QAbstractItemView::SelectedClicked  4   Editing starts when clicking on an already selected item.
        QAbstractItemView::EditKeyPressed   8   Editing starts when the platform edit key has been pressed over an item.
        QAbstractItemView::AnyKeyPressed    16  Editing starts when any key is pressed over an item.
        QAbstractItemView::AllEditTriggers  31  Editing starts for all above actions.
        '''
        if self.odczyt():
            self.table.setEditTriggers(QAbstractItemView.AllEditTriggers)
        else:
            self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.table.setSelectionMode(QAbstractItemView.SingleSelection)
        self.table.verticalHeader().setVisible(False)
        self.table.setSortingEnabled(True)
        self.table.resizeColumnsToContents()
        self.table.setModel(self.model)
        self.table.setAlternatingRowColors(True)
        self.table.resizeColumnsToContents()
Ejemplo n.º 25
0
 def create_employees_table_model(self):
     self.table_model.setTable('employees')
     self.table_model.setRelation(2, QSqlRelation('positions', 'position_id', 'position'))
     self.table_model.select()
Ejemplo n.º 26
0
    def __init__(self, parent=None):
        super(PhoneLogDlg, self).__init__(parent)

        callerLabel = QLabel("&Caller:")
        self.callerEdit = QLineEdit()
        callerLabel.setBuddy(self.callerEdit)
        today = QDate.currentDate()
        startLabel = QLabel("&Start:")
        self.startDateTime = QDateTimeEdit()
        startLabel.setBuddy(self.startDateTime)
        self.startDateTime.setDateRange(today, today)
        self.startDateTime.setDisplayFormat(DATETIME_FORMAT)
        endLabel = QLabel("&End:")
        self.endDateTime = QDateTimeEdit()
        endLabel.setBuddy(self.endDateTime)
        self.endDateTime.setDateRange(today, today)
        self.endDateTime.setDisplayFormat(DATETIME_FORMAT)
        topicLabel = QLabel("&Topic:")
        topicEdit = QLineEdit()
        topicLabel.setBuddy(topicEdit)
        outcomeLabel = QLabel("&Outcome:")
        self.outcomeComboBox = QComboBox()
        outcomeLabel.setBuddy(self.outcomeComboBox)
        firstButton = QPushButton()
        firstButton.setIcon(QIcon(":/first.png"))
        prevButton = QPushButton()
        prevButton.setIcon(QIcon(":/prev.png"))
        nextButton = QPushButton()
        nextButton.setIcon(QIcon(":/next.png"))
        lastButton = QPushButton()
        lastButton.setIcon(QIcon(":/last.png"))
        addButton = QPushButton("&Add")
        addButton.setIcon(QIcon(":/add.png"))
        deleteButton = QPushButton("&Delete")
        deleteButton.setIcon(QIcon(":/delete.png"))
        quitButton = QPushButton("&Quit")
        quitButton.setIcon(QIcon(":/quit.png"))
        if not MAC:
            addButton.setFocusPolicy(Qt.NoFocus)
            deleteButton.setFocusPolicy(Qt.NoFocus)

        fieldLayout = QGridLayout()
        fieldLayout.addWidget(callerLabel, 0, 0)
        fieldLayout.addWidget(self.callerEdit, 0, 1, 1, 3)
        fieldLayout.addWidget(startLabel, 1, 0)
        fieldLayout.addWidget(self.startDateTime, 1, 1)
        fieldLayout.addWidget(endLabel, 1, 2)
        fieldLayout.addWidget(self.endDateTime, 1, 3)
        fieldLayout.addWidget(topicLabel, 2, 0)
        fieldLayout.addWidget(topicEdit, 2, 1, 1, 3)
        fieldLayout.addWidget(outcomeLabel, 3, 0)
        fieldLayout.addWidget(self.outcomeComboBox, 3, 1, 1, 3)
        navigationLayout = QHBoxLayout()
        navigationLayout.addWidget(firstButton)
        navigationLayout.addWidget(prevButton)
        navigationLayout.addWidget(nextButton)
        navigationLayout.addWidget(lastButton)
        fieldLayout.addLayout(navigationLayout, 4, 0, 1, 2)
        buttonLayout = QVBoxLayout()
        buttonLayout.addWidget(addButton)
        buttonLayout.addWidget(deleteButton)
        buttonLayout.addStretch()
        buttonLayout.addWidget(quitButton)
        layout = QHBoxLayout()
        layout.addLayout(fieldLayout)
        layout.addLayout(buttonLayout)
        self.setLayout(layout)

        self.model = QSqlRelationalTableModel(self)
        self.model.setTable("calls")
        self.model.setRelation(OUTCOMEID, QSqlRelation("outcomes", "id",
                                                       "name"))
        self.model.setSort(STARTTIME, Qt.AscendingOrder)
        self.model.select()

        self.mapper = QDataWidgetMapper(self)
        self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
        self.mapper.setModel(self.model)
        self.mapper.setItemDelegate(QSqlRelationalDelegate(self))
        self.mapper.addMapping(self.callerEdit, CALLER)
        self.mapper.addMapping(self.startDateTime, STARTTIME)
        self.mapper.addMapping(self.endDateTime, ENDTIME)
        self.mapper.addMapping(topicEdit, TOPIC)
        relationModel = self.model.relationModel(OUTCOMEID)
        self.outcomeComboBox.setModel(relationModel)
        self.outcomeComboBox.setModelColumn(relationModel.fieldIndex("name"))
        self.mapper.addMapping(self.outcomeComboBox, OUTCOMEID)
        self.mapper.toFirst()

        firstButton.clicked.connect(lambda: self.saveRecord(PhoneLogDlg.FIRST))
        prevButton.clicked.connect(lambda: self.saveRecord(PhoneLogDlg.PREV))
        nextButton.clicked.connect(lambda: self.saveRecord(PhoneLogDlg.NEXT))
        lastButton.clicked.connect(lambda: self.saveRecord(PhoneLogDlg.LAST))
        addButton.clicked.connect(self.addRecord)
        deleteButton.clicked.connect(self.deleteRecord)
        quitButton.clicked.connect(self.done)
        self.setWindowTitle("Phone Log")
Ejemplo n.º 27
0
    def __init__(self, parent=None):
        super().__init__(parent)

        horizontalLayout = QHBoxLayout()
        self.dayView = QTableView()
        self.dayView.setFrameShape(QFrame.Box)
        self.dayView.horizontalHeader().setStretchLastSection(True)
        self.dayView.verticalHeader().setVisible(False)
        horizontalLayout.addWidget(self.dayView)

        verticalLayout = QVBoxLayout()
        self.calendarWidget = QCalendarWidget()
        self.calendarWidget.setMinimumSize(QSize(250, 200))
        self.calendarWidget.setMaximumSize(QSize(250, 200))
        self.calendarWidget.setMinimumDate(QDate(2017, 1, 1))
        self.calendarWidget.setMaximumDate(QDate(2030, 1, 1))
        self.calendarWidget.selectionChanged.connect(self.dataChange)
        self.calendarWidget.setSelectedDate(QDate.currentDate())

        verticalLayout.addWidget(self.calendarWidget)

        titleFV = QLabel('Food View')
        verticalLayout.addWidget(titleFV)

        self.filterLine = QLineEdit()
        self.filterLine.setMaximumSize(QSize(200, 25))

        self.filterLine.textChanged.connect(self.filterChange)

        buttonAdd = QPushButton(QIcon("images/add.png"), '', None)
        buttonAdd.setMaximumSize(QSize(20, 30))
        buttonAdd.clicked.connect(self.addFood)
        buttonDell = QPushButton(QIcon("images/del.png"), '', None)
        buttonDell.setMaximumSize(QSize(20, 30))
        buttonDell.clicked.connect(self.delFood)

        lineEditLayout = QHBoxLayout()
        lineEditLayout.addWidget(self.filterLine)
        lineEditLayout.addWidget(buttonAdd)
        lineEditLayout.addWidget(buttonDell)

        verticalLayout.addLayout(lineEditLayout)

        self.foodView = QTableView()
        self.foodView.setMinimumSize(QSize(0, 0))
        self.foodView.setMaximumSize(QSize(250, 1000))
        self.foodView.verticalHeader().setVisible(False)
        self.foodView.horizontalHeader().setStretchLastSection(True)

        verticalLayout.addWidget(self.foodView)
        horizontalLayout.addLayout(verticalLayout)

        self.setLayout(horizontalLayout)

        model_in = QSqlRelationalTableModel()
        model_in.setEditStrategy(QSqlTableModel.OnFieldChange)
        model_in.setTable("intake_food")

        id_food = model_in.fieldIndex("id_food")
        date = model_in.fieldIndex("food_date")
        mass = model_in.fieldIndex("mass")

        # Set model, hide ID column
        model_in.setRelation(id_food, QSqlRelation("food", "id", "name"))
        model_in.setHeaderData(id_food, Qt.Horizontal, "Food")
        model_in.setHeaderData(date, Qt.Horizontal, "Date")
        model_in.setHeaderData(mass, Qt.Horizontal, "Mass")

        if not model_in.select():
            self.showError(model_in.lastError())
            return

        self.proxyModel_in = QSortFilterProxyModel()
        self.proxyModel_in.setSourceModel(model_in)
        self.proxyModel_in.setFilterKeyColumn(2)

        self.dayView.setItemDelegate(FlipProxyDelegate())
        self.dayView.setModel(self.proxyModel_in)
        self.dayView.setColumnHidden(0, True)
        self.dayView.setColumnHidden(2, True)
        self.dayView.setSelectionMode(QAbstractItemView.SingleSelection)
        self.dayView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.dayView.customContextMenuRequested.connect(self.ShowContextMenu)
        # filter day food by calendar widget
        self.dataChange()

        self.model_f = QSqlRelationalTableModel()
        self.model_f.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model_f.setTable("food")

        self.model_f.setHeaderData(1, Qt.Horizontal, "Food")
        self.model_f.setHeaderData(2, Qt.Horizontal, "Rate")

        if not self.model_f.select():
            self.showError(self.model_f.lastError())
            return

        self.proxyModel_f = QSortFilterProxyModel()
        self.proxyModel_f.setSourceModel(self.model_f)
        self.proxyModel_f.setFilterKeyColumn(1)

        self.foodView.setModel(self.proxyModel_f)
        self.foodView.setColumnHidden(0, True)
        self.foodView.setSelectionMode(QAbstractItemView.SingleSelection)
        self.foodView.setColumnWidth(1, 150)
        self.foodView.setColumnWidth(2, 90)
Ejemplo n.º 28
0
def init_best_before(self):

    model = QSqlRelationalTableModel()
    model.setTable("best_before")
    model.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)

    model.setRelation(1, QSqlRelation('nutrition', 'ndbno', 'desc'))
    model.select()
#Nutrition table needs to be populated since otherwise only 256 rows are read
#And all inserts with ndbno > 100169 fail since they aren't found in nutrition
    #table
    nutri_model = model.relationModel(1)
    while nutri_model.canFetchMore():
        nutri_model.fetchMore()
    self.bb_model = model

    nutri_model = self.lv_keys.model()
    #nutri_model = QSqlTableModel()
    #nutri_model.setTable("nutrition")
    ##nutri_model.setRelation(2, QSqlRelation('nutrition', 'ndbno', 'desc'))
    #nutri_model.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
    #nutri_model.setSort(1,Qt.AscendingOrder)
    #nutri_model.select()
    self.cb_bb_item.setModel(nutri_model)
    self.cb_bb_item.setModelColumn(0)

    self.best_before_model = model

    self.tv_best_before.setModel(model)
    self.tv_best_before.setSortingEnabled(True)
    self.tv_best_before.sortByColumn(2, Qt.AscendingOrder)
    self.tv_best_before.setItemDelegate(QSqlRelationalDelegate(self.tv_best_before))
    self.tv_best_before.show()

#From Price
    self.cb_price_item.setModel(nutri_model)
    self.cb_price_item.setModelColumn(0)
#From Tag
    self.cb_item_tag.setModel(nutri_model)
    self.cb_item_tag.setModelColumn(0)

    """Updates Best before table"""
    def update_bb():
        print ("Updating Best Before")
        if not self.bb_model.submitAll():
            QMessageBox.critical(None, "Error updating Best Before",
                    "Couldn't update model: " +
                    self.bb_model.lastError().text())

    """Adds new data to best before table

    update_bb also needs to be called"""
    def add_bb():
        print("Adding to BB")
        ndbno = self._get_selected_ndbno(self.cb_bb_item.model() \
                .record(self.cb_bb_item.currentIndex()))
        print ("IDX:", self.cb_bb_item.currentIndex(),
                ndbno)


        row = self.bb_model.rowCount()
        self.bb_model.insertRow(row)
        #print ("NDBNO INDEX:", self.bb_model.fieldIndex("desc"))
        r = self.bb_model.record()
        #for i in range(r.count()):
            #print ("{} => {}".format(i,r.fieldName(i)))
        #for i in range(100000,100194):
            #out_ndbno = self.bb_model.setData(self.bb_model.createIndex(row,
                #self.bb_model.fieldIndex("desc")), i,
                    #Qt.EditRole)
            #print ("{}? = {}".format(out_ndbno, i))
        out_ndbno = self.bb_model.setData(self.bb_model.createIndex(row,
            self.bb_model.fieldIndex("desc")), ndbno,
                Qt.EditRole)
        out_time = self.bb_model.setData(self.bb_model.createIndex(row,
            self.bb_model.fieldIndex("time")),
                self.de_bb.date(),
                Qt.EditRole)
        print ("NDBNO:", out_ndbno, "TIME:", out_time)

    self.update_bb = update_bb
    self.add_bb = add_bb

    self.buttonBox_3.button(QDialogButtonBox.SaveAll).clicked.connect(self.update_bb)
    self.buttonBox_3.button(QDialogButtonBox.Apply).clicked.connect(self.add_bb)
Ejemplo n.º 29
0
    def __init__(self):
        super(MainForm, self).__init__()

        self.assetModel = QSqlRelationalTableModel(self)
        self.assetModel.setTable("assets")
        self.assetModel.setRelation(CATEGORYID,
                                    QSqlRelation("categories", "id", "name"))
        self.assetModel.setSort(ROOM, Qt.AscendingOrder)
        self.assetModel.setHeaderData(ID, Qt.Horizontal, "ID")
        self.assetModel.setHeaderData(NAME, Qt.Horizontal, "Name")
        self.assetModel.setHeaderData(CATEGORYID, Qt.Horizontal, "Category")
        self.assetModel.setHeaderData(ROOM, Qt.Horizontal, "Room")
        self.assetModel.select()

        self.assetView = QTableView()
        self.assetView.setModel(self.assetModel)
        self.assetView.setItemDelegate(AssetDelegate(self))
        self.assetView.setSelectionMode(QTableView.SingleSelection)
        self.assetView.setSelectionBehavior(QTableView.SelectRows)
        self.assetView.setColumnHidden(ID, True)
        self.assetView.resizeColumnsToContents()
        assetLabel = QLabel("A&ssets")
        assetLabel.setBuddy(self.assetView)

        self.logModel = QSqlRelationalTableModel(self)
        self.logModel.setTable("logs")
        self.logModel.setRelation(ACTIONID,
                                  QSqlRelation("actions", "id", "name"))
        self.logModel.setSort(DATE, Qt.AscendingOrder)
        self.logModel.setHeaderData(DATE, Qt.Horizontal, "Date")
        self.logModel.setHeaderData(ACTIONID, Qt.Horizontal, "Action")
        self.logModel.select()

        self.logView = QTableView()
        self.logView.setModel(self.logModel)
        self.logView.setItemDelegate(LogDelegate(self))
        self.logView.setSelectionMode(QTableView.SingleSelection)
        self.logView.setSelectionBehavior(QTableView.SelectRows)
        self.logView.setColumnHidden(ID, True)
        self.logView.setColumnHidden(ASSETID, True)
        self.logView.resizeColumnsToContents()
        self.logView.horizontalHeader().setStretchLastSection(True)
        logLabel = QLabel("&Logs")
        logLabel.setBuddy(self.logView)

        addAssetButton = QPushButton("&Add Asset")
        deleteAssetButton = QPushButton("&Delete Asset")
        addActionButton = QPushButton("Add A&ction")
        deleteActionButton = QPushButton("Delete Ac&tion")
        editActionsButton = QPushButton("&Edit Actions...")
        editCategoriesButton = QPushButton("Ed&it Categories...")
        quitButton = QPushButton("&Quit")
        for button in (addAssetButton, deleteAssetButton, addActionButton,
                       deleteActionButton, editActionsButton,
                       editCategoriesButton, quitButton):
            if MAC:
                button.setDefault(False)
                button.setAutoDefault(False)
            else:
                button.setFocusPolicy(Qt.NoFocus)

        dataLayout = QVBoxLayout()
        dataLayout.addWidget(assetLabel)
        dataLayout.addWidget(self.assetView, 1)
        dataLayout.addWidget(logLabel)
        dataLayout.addWidget(self.logView)
        buttonLayout = QVBoxLayout()
        buttonLayout.addWidget(addAssetButton)
        buttonLayout.addWidget(deleteAssetButton)
        buttonLayout.addWidget(addActionButton)
        buttonLayout.addWidget(deleteActionButton)
        buttonLayout.addWidget(editActionsButton)
        buttonLayout.addWidget(editCategoriesButton)
        buttonLayout.addStretch()
        buttonLayout.addWidget(quitButton)
        layout = QHBoxLayout()
        layout.addLayout(dataLayout, 1)
        layout.addLayout(buttonLayout)
        self.setLayout(layout)

        #self.connect(self.assetView.selectionModel(),
        #SIGNAL(("currentRowChanged(QModelIndex,QModelIndex)")),
        #self.assetChanged)
        self.assetView.selectionModel().currentRowChanged.connect(
            self.assetChanged)
        addAssetButton.clicked.connect(self.addAsset)
        deleteAssetButton.clicked.connect(self.deleteAsset)
        addActionButton.clicked.connect(self.addAction)
        deleteActionButton.clicked.connect(self.deleteAction)
        editActionsButton.clicked.connect(self.editActions)
        editCategoriesButton.clicked.connect(self.editCategories)
        quitButton.clicked.connect(self.done)

        self.assetChanged(self.assetView.currentIndex())
        self.setMinimumWidth(650)
        self.setWindowTitle("Asset Manager")
Ejemplo n.º 30
0
    def __init__(self, parent: any = None) -> None:
        """
        Функция инициализации окна штатного расписания
        :param parent: Родительский виджет (окно)
        """
        super().__init__(parent)
        self.filters = ['Номер',
                        'Подразделение',
                        'Должность',
                        'Количество',
                        'Тариф',
                        'Оклад',
                        'ФИО',
                        'Декрет',
                        'История',
                        'Оклад замещающего работника',
                        'Вид позиции',
                        ]
        self.setObjectName("ShtatWindow")
        self.resize(1380, 886)
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")

        self.view = QTableView(self.centralwidget)
        self.view.setGeometry(QRect(0, 0, 1381, 821))
        self.view.setObjectName("shtat_table_view")
        self.view.setSortingEnabled(True)

        self.filter_combo_box = QtWidgets.QComboBox(self.centralwidget)
        self.filter_combo_box.setGeometry(QRect(250, 840, 231, 31))
        self.filter_combo_box.setObjectName("filter_combo_box")
        self.filter_input = QtWidgets.QLineEdit(self.centralwidget)
        self.filter_input.setGeometry(QRect(500, 840, 281, 31))
        self.filter_input.setObjectName("filter_input")
        self.filter_label = QtWidgets.QLabel(self.centralwidget)
        self.filter_label.setGeometry(QRect(10, 840, 221, 31))
        font = QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(12)
        self.filter_label.setFont(font)
        self.filter_label.setObjectName("filter_label")
        self.filter_button = QtWidgets.QPushButton(self.centralwidget)
        self.filter_button.setGeometry(QRect(800, 840, 171, 31))
        self.save_shtat_button = QtWidgets.QPushButton(self.centralwidget)
        self.save_shtat_button.setGeometry(QRect(1000, 840, 225, 31))
        self.filter_button.setFont(font)
        self.save_shtat_button.setFont(font)
        self.filter_button.setObjectName("filter_button")
        self.setCentralWidget(self.centralwidget)

        _translate = QCoreApplication.translate
        self.setWindowTitle(_translate("ShtatWindow", "Работа со штатным расписанием"))
        self.filter_label.setText(_translate("ShtatWindow", "Фильтровать по столбцу:"))
        self.filter_button.setText(_translate("ShtatWindow", "Поиск"))
        self.save_shtat_button.setText(_translate("ShtatWindow", "Выгрузить штатное расписание"))

        self.model = QSqlRelationalTableModel(self.view)
        self.model.setTable('salaries')
        self.model.setEditStrategy(QSqlRelationalTableModel.OnFieldChange)
        self.model.setRelation(1, QSqlRelation("departments", "code", "department"))
        self.model.setRelation(10, QSqlRelation("positions", "position_code", "position_name"))
        for i in range(0, len(self.filters)):
            self.model.setHeaderData(i, Qt.Horizontal, self.filters[i])
        self.model.select()

        self.proxyModelContact = QSortFilterProxyModel(self)
        self.proxyModelContact.setSourceModel(self.model)
        self.view.setModel(self.proxyModelContact)
        self.view.resizeColumnsToContents()
        self.view.setItemDelegate(QSqlRelationalDelegate(self.view))
        self.filter_combo_box.addItems(self.filters)
        self.filter_button.clicked.connect(self.use_filter_button)
        self.save_shtat_button.clicked.connect(self.use_save_shtat_button)
        self.view.setItemDelegate(QSqlRelationalDelegate(self.view))