def init_db(self, db): self.model = QSqlTableModel(db=db) self.model.setTable('currencies') self.model.select() self.setModel(self.model) self.setModelColumn(1) self.setCurrentIndex(self.findText(get_base_currency_name(db)))
def __init__(self, parent, symbol, isin='', name=''): QDialog.__init__(self) self.setupUi(self) self.asset_id = None self.SymbolEdit.setText(symbol) self.isinEdit.setText(isin) self.NameEdit.setText(name) self.type_model = QSqlTableModel(db=db_connection()) self.type_model.setTable('asset_types') self.type_model.select() self.TypeCombo.setModel(self.type_model) self.TypeCombo.setModelColumn(1) self.data_src_model = QSqlTableModel(db=db_connection()) self.data_src_model.setTable('data_sources') self.data_src_model.select() self.DataSrcCombo.setModel(self.data_src_model) self.DataSrcCombo.setModelColumn(1) # center dialog with respect to parent window x = parent.x() + parent.width() / 2 - self.width() / 2 y = parent.y() + parent.height() / 2 - self.height() / 2 self.setGeometry(x, y, self.width(), self.height())
def __init__(self, symbol, isin='', name=''): QDialog.__init__(self) self.setupUi(self) self.asset_id = None self.SymbolEdit.setText(symbol) self.isinEdit.setText(isin) self.NameEdit.setText(name) self.type_model = QSqlTableModel(db=db_connection()) self.type_model.setTable('asset_types') self.type_model.select() self.TypeCombo.setModel(self.type_model) self.TypeCombo.setModelColumn(1) self.data_src_model = QSqlTableModel(db=db_connection()) self.data_src_model.setTable('data_sources') self.data_src_model.select() self.DataSrcCombo.setModel(self.data_src_model) self.DataSrcCombo.setModelColumn(1) # center dialog with respect to main application window parent = None for widget in QApplication.topLevelWidgets(): if widget.objectName() == Setup.MAIN_WND_NAME: parent = widget if parent: x = parent.x() + parent.width() / 2 - self.width() / 2 y = parent.y() + parent.height() / 2 - self.height() / 2 self.setGeometry(x, y, self.width(), self.height())
def __init__(self): super().__init__() self.table = QTableView() self.model = QSqlTableModel(db=db) self.table.setModel(self.model) # tag::titles[] self.model.setTable("Track") column_titles = { "Name": "Name", "AlbumId": "Album (ID)", "MediaTypeId": "Media Type (ID)", "GenreId": "Genre (ID)", "Composer": "Composer", } for n, t in column_titles.items(): idx = self.model.fieldIndex(n) self.model.setHeaderData(idx, Qt.Horizontal, t) self.model.select() # end::titles[] self.model.select() self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(self.table)
class AddAssetDialog(QDialog, Ui_AddAssetDialog): def __init__(self, parent, db, symbol): QDialog.__init__(self) self.setupUi(self) self.db = db self.asset_id = None self.SymbolEdit.setText(symbol) self.type_model = QSqlTableModel(db=db) self.type_model.setTable('asset_types') self.type_model.select() self.TypeCombo.setModel(self.type_model) self.TypeCombo.setModelColumn(1) self.data_src_model = QSqlTableModel(db=db) self.data_src_model.setTable('data_sources') self.data_src_model.select() self.DataSrcCombo.setModel(self.data_src_model) self.DataSrcCombo.setModelColumn(1) # center dialog with respect to parent window x = parent.x() + parent.width()/2 - self.width()/2 y = parent.y() + parent.height()/2 - self.height()/2 self.setGeometry(x, y, self.width(), self.height()) def accept(self): self.asset_id = addNewAsset(self.db, self.SymbolEdit.text(), self.NameEdit.text(), self.type_model.record(self.TypeCombo.currentIndex()).value("id"), self.isinEdit.text(), self.data_src_model.record(self.DataSrcCombo.currentIndex()).value("id")) super().accept()
def __init__(self, parent_view): self._columns = [("asset", g_tr("Reports", "Asset")), ("open_timestamp", g_tr("Reports", "Open Date")), ("close_timestamp", g_tr("Reports", "Close Date")), ("open_price", g_tr("Reports", "Open Price")), ("close_price", g_tr("Reports", "Close Price")), ("qty", g_tr("Reports", "Qty")), ("fee", g_tr("Reports", "Fee")), ("profit", g_tr("Reports", "P/L")), ("rel_profit", g_tr("Reports", "P/L, %")), ("corp_action", g_tr("Reports", "Note"))] self.ca_names = { CorporateAction.SymbolChange: g_tr('Reports', "Symbol change"), CorporateAction.Split: g_tr('Reports', "Split"), CorporateAction.SpinOff: g_tr('Reports', "Spin-off"), CorporateAction.Merger: g_tr('Reports', "Merger"), CorporateAction.StockDividend: g_tr('Reports', "Stock dividend") } self._view = parent_view self._group_dates = 0 self._query = None self._timestamp_delegate = None self._float_delegate = None self._float2_delegate = None self._float4_delegate = None self._profit_delegate = None self._ca_delegate = None QSqlTableModel.__init__(self, parent=parent_view, db=db_connection())
class MainWindow(QMainWindow): def __init__(self): super().__init__() form = QFormLayout() self.track_id = QSpinBox() self.track_id.setRange(0, 2147483647) self.track_id.setDisabled(True) self.name = QLineEdit() self.album = QComboBox() self.media_type = QComboBox() self.genre = QComboBox() self.composer = QLineEdit() self.milliseconds = QSpinBox() self.milliseconds.setRange(0, 2147483647) # <1> self.milliseconds.setSingleStep(1) self.bytes = QSpinBox() self.bytes.setRange(0, 2147483647) self.bytes.setSingleStep(1) self.unit_price = QDoubleSpinBox() self.unit_price.setRange(0, 999) self.unit_price.setSingleStep(0.01) self.unit_price.setPrefix("$") form.addRow(QLabel("Track ID"), self.track_id) form.addRow(QLabel("Track name"), self.name) form.addRow(QLabel("Composer"), self.composer) form.addRow(QLabel("Milliseconds"), self.milliseconds) form.addRow(QLabel("Bytes"), self.bytes) form.addRow(QLabel("Unit Price"), self.unit_price) self.model = QSqlTableModel(db=db) self.mapper = QDataWidgetMapper() # <2> self.mapper.setModel(self.model) self.mapper.addMapping(self.track_id, 0) # <3> self.mapper.addMapping(self.name, 1) self.mapper.addMapping(self.composer, 5) self.mapper.addMapping(self.milliseconds, 6) self.mapper.addMapping(self.bytes, 7) self.mapper.addMapping(self.unit_price, 8) self.model.setTable("Track") self.model.select() # <4> self.mapper.toFirst() # <5> self.setMinimumSize(QSize(400, 400)) widget = QWidget() widget.setLayout(form) self.setCentralWidget(widget)
def __init__(self): super().__init__() self.table = QTableView() self.model = QSqlTableModel(db=db) self.table.setModel(self.model) self.model.setTable("hello") self.model.select() self.setCentralWidget(self.table)
def __init__(self, parent_view): self._columns = [("timestamp", g_tr("Reports", "Timestamp")), ("account", g_tr("Reports", "Account")), ("name", g_tr("Reports", "Peer Name")), ("sum", g_tr("Reports", "Amount")), ("note", g_tr("Reports", "Note"))] self._view = parent_view self._query = None self._timestamp_delegate = None self._float_delegate = None QSqlTableModel.__init__(self, parent=parent_view, db=db_connection())
def __init__(self, table, parent_view): super().__init__(parent_view) self._table = table self._view = parent_view self._default_name = "name" self._stretch = None # This is auxiliary 'plain' model of the same table - to be given as QCompleter source of data self._completion_model = QSqlTableModel(parent=parent_view, db=db_connection()) self._completion_model.setTable(self._table) self._completion_model.select()
def __open_collection(self): collection = QFileDialog.getOpenFileName()[0] db = QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName(collection) db.open() self._model = QSqlTableModel(self, db) self._model.setTable('objects') self._model.select() self._view.setModel(self._model)
class SQLite(QSqlDatabase): """ Класс для инициализации и открытия базы данных каталога, полученный из Slot'а (openFile) """ def __init__(self, path=None): """ Инициализация экземпляра класса :param path: путь до каталога, полученный изиз Slot'а (openFile) """ super().__init__() self.path = path self.width = 0 self.heigh = 0 self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(self.path) self.db.open() self.window = QWidget() self.window.setWindowTitle("Каталог книг") self.conn = sqlite3.connect(self.path) cursor = self.conn.cursor() sql = f'select * from sqlite_master where type = "table"' # получение имени таблицы(первая в списке), к которой будет # осуществлено подключение cursor.execute(sql) self.search_result = cursor.fetchall()[0][1] self.model = QSqlTableModel(parent=self.window, db=self.db) self.model.setTable(self.search_result) self.db_record = QSqlRecord(self.db.record(self.search_result)) self.tableView = QTableView() def on(self): """ Метод для подключения и отображения подключенного каталога :return: виджет self.window """ self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.model.select() self.model.setHeaderData(-1, Qt.Horizontal, self.db_record.fieldName(0)) vbox = QVBoxLayout() self.tableView.setModel(self.model) self.tableView.resizeColumnsToContents() self.tableView.resizeRowsToContents() for i in range(self.model.columnCount() + 2): self.width += self.tableView.columnWidth(i) for j in range(self.model.rowCount() + 1): self.heigh += self.tableView.rowHeight(j) self.tableView.resize(self.width + 50, self.heigh + 50) vbox.addWidget(self.tableView) self.window.setLayout(vbox) self.window.resize(self.tableView.width() + 30, self.tableView.height() + 120) return self.window
def __init__(self, parent_view): self._columns = [("period", g_tr("Reports", "Period")), ("transfer", g_tr("Reports", "In / Out")), ("assets", g_tr("Reports", "Assets value")), ("result", g_tr("Reports", "Total result")), ("profit", g_tr("Reports", "Profit / Loss")), ("dividend", g_tr("Reports", "Returns")), ("tax_fee", g_tr("Reports", "Taxes & Fees"))] self._view = parent_view self._query = None self._ym_delegate = None self._float_delegate = None QSqlTableModel.__init__(self, parent=parent_view, db=db_connection())
def __init__(self, parent): QComboBox.__init__(self, parent) self.p_selected_id = 0 self.model = None self.table_name = 'currencies' self.field_name = 'name' self.activated.connect(self.OnUserSelection) self.model = QSqlTableModel(db=db_connection()) self.model.setTable(self.table_name) self.model.select() self.setModel(self.model) self.setModelColumn(self.model.fieldIndex(self.field_name))
class MainWindow(QMainWindow): """ Class responsible for displaying primary interface. """ def __init__(self): super().__init__() self.table = QTableView() self.model = QSqlTableModel(db=db) self.table.setModel(self.model) self.model.setTable("hello") self.model.select() self.setCentralWidget(self.table)
def init_connect_db(self): self.model = QSqlTableModel() self.tableView.setModel(self.model) self.model.setTable('notifications') 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.setFilter('college="华南理工大学软件学院"') self.model.select()
def _init_db(self, table_name): self.table_name = table_name self.model = QSqlTableModel(parent=self, db=db_connection()) self.model.setTable(table_name) self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.mapper = QDataWidgetMapper(self.model) self.mapper.setModel(self.model) self.mapper.setSubmitPolicy(QDataWidgetMapper.AutoSubmit) self.model.dataChanged.connect(self.onDataChange) self.commit_button.clicked.connect(self.saveChanges) self.revert_button.clicked.connect(self.revertChanges)
class Window(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle('Desktop application') self._label = QLabel('Collection', self) self._open_button = QPushButton('Open') self._open_button.setToolTip('Choose the collection database') self._add_button = QPushButton('Add') self._add_button.setToolTip('Add a new entry into the collection') self._model = None self._view = QTableView(self) horizontal_layout = QHBoxLayout() horizontal_layout.addWidget(self._label) horizontal_layout.addWidget(self._open_button) horizontal_layout.addWidget(self._add_button) layout = QVBoxLayout() layout.addLayout(horizontal_layout) layout.addWidget(self._view) self.setLayout(layout) self._open_button.clicked.connect(self.__open_collection) self._add_button.clicked.connect(self.__add_new_entry) @Slot() def __open_collection(self): collection = QFileDialog.getOpenFileName()[0] db = QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName(collection) db.open() self._model = QSqlTableModel(self, db) self._model.setTable('objects') self._model.select() self._view.setModel(self._model) @Slot() def __add_new_entry(self): dialog = AddEntryDialog(self) if dialog.exec_() == AddEntryDialog.Accepted: entry = dialog.entry print(entry)
def __init__(self): super().__init__() self.table = QTableView() self.model = QSqlTableModel(db=db) self.table.setModel(self.model) self.model.setTable("Track") self.model.select() self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(self.table)
def accept(self): if self.uj_station: now = QDateTime.currentDateTime() network = QSqlTableModel() network.setTable("reged_station") rec_net = network.record() rec_net.remove(0) rec_net.setValue(0, self.station.text()) rec_net.setValue(1, self.ip.text()) rec_net.setValue(2, self.token.text()) rec_net.setValue(3, now) if network.insertRecord(-1, rec_net): network.submitAll() else: db.rollback() self.uj_station = False if self.valtozott: # Módosítani a db-t és a config.ini-t # config.ini update config.set('DEFAULT', 'secret key', self.token.text()) config.set('DEFAULT', 'station ip', self.ip.text()) config.set('DEFAULT', 'station id', self.station.text()) with open('config.ini', 'w') as configfile: config.write(configfile) # db update now = QDateTime.currentDateTime().toString( "yyyy-MM-ddThh:mm:ss.sss") model3 = QSqlQueryModel() query3 = QSqlQuery( f"update reged_station set station_id='{self.station.text()}', station_ip='{self.ip.text()}', timestamp='{now}' where secret_key='{self.token.text()}'", db=db) model3.setQuery(query3) self.valtozott = False super().accept()
def new_kiadas(self): self.kiadas_form_window = KiadasFormDialog() self.kiadas_form_window.setWindowTitle("Új kiadás rögzítése") self.kiadas_form_window.show() model = QSqlTableModel() model.setTable("kassza") record = model.record() record.remove(record.indexOf('id')) if self.kiadas_form_window.exec_(): mezo_rekord = [] for i in range(len(self.kiadas_form_window.mezo_ertekek)): if i != 4: mezo_rekord.append( self.kiadas_form_window.mezo_ertekek[i].text()) else: mezo_rekord.append( int(self.kiadas_form_window.mezo_ertekek[i].text()) * -1) for i in range(len(mezo_rekord)): record.setValue(i, mezo_rekord[i]) if model.insertRecord(-1, record): model.submitAll() else: db.rollback()
def UseSqlTable(db, table_name, columns, relations): if relations: model = QSqlRelationalTableModel(db=db) else: model = QSqlTableModel(db=db) model.setTable(table_name) model.setEditStrategy(QSqlTableModel.OnManualSubmit) if relations: model.setJoinMode(QSqlRelationalTableModel.LeftJoin ) # to work correctly with NULL values in fields for relation in relations: model.setRelation( model.fieldIndex(relation[rel_idx.KEY_FIELD]), QSqlRelation(relation[rel_idx.LOOKUP_TABLE], relation[rel_idx.FOREIGN_KEY], relation[rel_idx.LOOKUP_FIELD])) for column in columns: if column[hcol_idx.DISPLAY_NAME]: model.setHeaderData( model.fieldIndex(column[hcol_idx.DB_NAME]), Qt.Horizontal, g_tr('TableViewConfig', column[hcol_idx.DISPLAY_NAME])) if column[hcol_idx.SORT_ORDER] is not None: model.setSort(model.fieldIndex(column[hcol_idx.DB_NAME]), column[hcol_idx.SORT_ORDER]) return model
def __init__(self, parent): super(ManageSettings, self).__init__(parent) self.setWindowTitle("Paraméterek kezelése") widget = QWidget() main_layout = QHBoxLayout() widget.setLayout(main_layout) self.setCentralWidget(widget) self.table_view = QTableView() main_layout.addWidget(self.table_view) self.model = QSqlTableModel(db=db) self.model.setTable("settings") self.model.select() self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.model.setHeaderData(1, Qt.Horizontal, "Paraméter") self.model.setHeaderData(2, Qt.Horizontal, "Érték") self.table_view.setModel(self.model) self.table_view.setSortingEnabled(True) self.table_view.hideColumn(0) self.table_view.resizeColumnsToContents() self.model.dataChanged.connect(self.valtozott) gomb_layout = QVBoxLayout() main_layout.addLayout(gomb_layout) self.apply_button = QPushButton("Módosítások alkalmazása") self.cancel_button = QPushButton("Módosítások elvetése") gomb_layout.addWidget(self.apply_button) gomb_layout.addWidget(self.cancel_button) self.space = QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding) gomb_layout.addItem(self.space) self.setFixedSize(400, 600) tb = self.addToolBar("File") exit = QAction(QIcon("images/door--arrow.png"), "Kilépés", self) tb.addAction(exit) tb.actionTriggered[QAction].connect(self.toolbarpressed) self.apply_button.clicked.connect(self.valtozas_mentese) self.cancel_button.clicked.connect(self.valtozas_elvetese)
def data(self, index, role): if role < Qt.UserRole: return QSqlTableModel.data(self, index, role) sql_record = QSqlRecord() sql_record = self.record(index.row()) return sql_record.value(role - Qt.UserRole)
def __init__(self): super().__init__() self.table = QTableView() self.model = QSqlTableModel(db=db) self.table.setModel(self.model) # tag::sortTable[] self.model.setTable("Track") self.model.setSort(2, Qt.DescendingOrder) self.model.select() # end::sortTable[] self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(self.table)
def UseSqlQuery(db, query, columns): model = QSqlTableModel(db=db) model.setQuery(query) for column in columns: if column[hcol_idx.DISPLAY_NAME]: model.setHeaderData(model.fieldIndex(column[hcol_idx.DB_NAME]), Qt.Horizontal, column[hcol_idx.DISPLAY_NAME]) return model
class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.button_change_file.clicked.connect(self.get_file) self.db = None self.model = None self.tables = None def get_file(self): fname = QFileDialog.getOpenFileName(self, 'Open file', "c://", "SQLite files (*.db)") self.connect_db(fname[0]) def connect_db(self, fname): if fname.endswith(".db"): db = QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName(fname) db.open() self.ui.label_current_file.setText(fname) self.db = db self.tables = self.db.tables() self.populate_combo() self.show_table() else: self.ui.label_current_file.setText("Invalid File Selected") def populate_combo(self): self.ui.combo_table_select.clear() self.ui.combo_table_select.addItems(self.tables) self.ui.combo_table_select.activated.connect(self.update_table) def show_table(self): self.model = QSqlTableModel(db=self.db) self.ui.table_view.setModel(self.model) self.ui.table_view.show() def update_table(self, table): self.model.setTable(self.tables[table]) self.model.select()
def __init__(self, table, parent_view): self._view = parent_view self._table = table self._columns = [] self._default_name = "name" self._group_by = None self._sort_by = None self._hidden = [] self._stretch = None QSqlRelationalTableModel.__init__(self, parent=parent_view, db=db_connection()) self.setJoinMode(QSqlRelationalTableModel.LeftJoin) self.setTable(self._table) self.setEditStrategy(QSqlTableModel.OnManualSubmit) self.select() # This is auxiliary 'plain' model of the same table - to be given as QCompleter source of data self._completion_model = QSqlTableModel(parent=parent_view, db=db_connection()) self._completion_model.setTable(self._table) self._completion_model.select()
class MainWindow(QMainWindow): 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 = QSqlTableModel(db=db) self.table.setModel(self.model) self.model.setTable("Track") self.model.select() self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(container) # tag::filter[] def update_filter(self, s): s = re.sub("[\W_]+", "", s) filter_str = 'Name LIKE "%{}%"'.format(s) self.model.setFilter(filter_str)
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 = QSqlTableModel(db=db) self.table.setModel(self.model) self.model.setTable("Track") self.model.select() self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(container)