本文通过python3+pyqt5改写实现了python Qt gui 编程变成15章的excise例子。
#!/usr/bin/env python3 import os import sys from PyQt5.QtCore import (QFile, QVariant, Qt) from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QMenu, QMessageBox, QTableView, QVBoxLayout) from PyQt5.QtSql import (QSqlDatabase, QSqlQuery, QSqlTableModel) MAC = True try: from PyQt5.QtGui import qt_mac_set_native_menubar except ImportError: MAC = False ID, CATEGORY, SHORTDESC, LONGDESC = range(4) class ReferenceDataDlg(QDialog): def __init__(self, parent=None): super(ReferenceDataDlg, self).__init__(parent) self.model = QSqlTableModel(self) self.model.setTable("reference") self.model.setSort(ID, Qt.AscendingOrder) self.model.setHeaderData(ID, Qt.Horizontal, "ID") self.model.setHeaderData(CATEGORY, Qt.Horizontal,"Category") self.model.setHeaderData(SHORTDESC, Qt.Horizontal,"Short Desc.") self.model.setHeaderData(LONGDESC, Qt.Horizontal,"Long Desc.") self.model.select() self.view = QTableView() self.view.setModel(self.model) self.view.setSelectionMode(QTableView.SingleSelection) self.view.setSelectionBehavior(QTableView.SelectRows) self.view.setColumnHidden(ID, True) self.view.resizeColumnsToContents() buttonBox = QDialogButtonBox() addButton = buttonBox.addButton("&Add", QDialogButtonBox.ActionRole) deleteButton = buttonBox.addButton("&Delete", QDialogButtonBox.ActionRole) sortButton = buttonBox.addButton("&Sort", QDialogButtonBox.ActionRole) if not MAC: addButton.setFocusPolicy(Qt.NoFocus) deleteButton.setFocusPolicy(Qt.NoFocus) sortButton.setFocusPolicy(Qt.NoFocus) menu = QMenu(self) sortByCategoryAction = menu.addAction("Sort by &Category") sortByDescriptionAction = menu.addAction("Sort by &Description") sortByIDAction = menu.addAction("Sort by &ID") sortButton.setMenu(menu) closeButton = buttonBox.addButton(QDialogButtonBox.Close) layout = QVBoxLayout() layout.addWidget(self.view) layout.addWidget(buttonBox) self.setLayout(layout) addButton.clicked.connect(self.addRecord) deleteButton.clicked.connect(self.deleteRecord) sortByCategoryAction.triggered.connect(lambda:self.sort(CATEGORY)) sortByDescriptionAction.triggered.connect(lambda:self.sort(SHORTDESC)) sortByIDAction.triggered.connect(lambda:self.sort(ID)) closeButton.clicked.connect(self.accept) self.setWindowTitle("Reference Data") def addRecord(self): row = self.model.rowCount() self.model.insertRow(row) index = self.model.index(row, CATEGORY) self.view.setCurrentIndex(index) self.view.edit(index) def deleteRecord(self): index = self.view.currentIndex() if not index.isValid(): return record = self.model.record(index.row()) category = record.value(CATEGORY) desc = record.value(SHORTDESC) if (QMessageBox.question(self, "Reference Data", ("Delete {0} from category {1}?" .format(desc,category)), QMessageBox.Yes|QMessageBox.No) == QMessageBox.No): return self.model.removeRow(index.row()) self.model.submitAll() self.model.select() def sort(self, column): self.model.setSort(column, Qt.AscendingOrder) self.model.select() def main(): app = QApplication(sys.argv) filename = os.path.join(os.path.dirname(__file__), "reference.db") create = not QFile.exists(filename) db = QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName(filename) if not db.open(): QMessageBox.warning(None, "Reference Data", "Database Error: {0}".format(db.lastError().text())) sys.exit(1) if create: query = QSqlQuery() query.exec_("""CREATE TABLE reference ( id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, category VARCHAR(30) NOT NULL, shortdesc VARCHAR(20) NOT NULL, longdesc VARCHAR(80))""") form = ReferenceDataDlg() form.show() sys.exit(app.exec_()) main()
运行结果:
以上这篇python3+PyQt5 数据库编程--增删改实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍php实现数据库的增删改查,包括了php实现数据库的增删改查的使用技巧和注意事项,需要的朋友参考一下 1.查询: 数据的显示,这里就可以嵌入php来进行数据的输出 2.删除的处理页面 删除时是链接到删除处理页面的,所以还要写一个删除处理页面: 来张效果图: 3.添加数据: 点击即可进入添加页面 添加页面: 添加也需要一个处理页面来判断添加: 效果图: 4.修改数据:主键不可修改!!
本文向大家介绍python3+PyQt5使用数据库表视图,包括了python3+PyQt5使用数据库表视图的使用技巧和注意事项,需要的朋友参考一下 上文提到窗体可以一次性呈现出来自同一记录的各个域,但是对于用户希望能看到多条记录的表来说,就需要使用表格化的视图了。本文通过python3+pyqt5改写实现了python Qt gui 快速变成15章的例子,用户能够一次看到多条记录。 运行结果: 以
本文向大家介绍python3+PyQt5使用数据库窗口视图,包括了python3+PyQt5使用数据库窗口视图的使用技巧和注意事项,需要的朋友参考一下 能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域。本文通过python3+pyqt5改写实现了python Qt gui 快速变成15章的例子。 运行结果: 以上就是本文的全部内容,希望对大家的学习有所帮
本文向大家介绍jsp+servlet+jdbc实现对数据库的增删改查,包括了jsp+servlet+jdbc实现对数据库的增删改查的使用技巧和注意事项,需要的朋友参考一下 一、JSP和Servlet的简单介绍 1、Servlet和JSP简介: Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP,Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序
本文向大家介绍Node.js操作mysql数据库增删改查,包括了Node.js操作mysql数据库增删改查的使用技巧和注意事项,需要的朋友参考一下 关于node.js操作mysql数据库的相关介绍请阅读全文吧。下文介绍的非常详细,具体内容如下所示: 安装mysql模块 数据库准备 mysql server所在的机器IP地址是192.168.0.108,登录账户就用root@123456 在mys
本文向大家介绍ThinkPHP框架实现数据增删改,包括了ThinkPHP框架实现数据增删改的使用技巧和注意事项,需要的朋友参考一下 使用TP框架主要是比较简单一些,之前我们写增删改,代码量相对来说还是比较多的,这里利用tp框架写起来是非常简单的,大大的减少了代码量 这里我是以数据库的nation表为例的,nation表只有两列,一列是code 另一列是name,首先是增加add方法 其次