又是一天时间(又没做大作业)。今天的心路历程:(1)前端后端怎么连接?(2)后端数据库插数据(3)完全没用上之前的字典反查法(4)突然发现面向对象编程其实很好用,甚至越用越上瘾(5)QLineEdit、QInputDialog、QGridLayout(6)用clicked.connect()触发“事件”(7)设计函数连接数据库,QtSql(8)QSqlDatabase、QSqlQuery这两个小东西可真让我踩了不少的坑(9)几句踩到类的关键代码 query = QSqlQuery() “实例化”、 query.prepare(f'select Rclassification from Rub_cl where Rname="{text}"') 双引号极致关键、 query.next() 的意义(10)最后偷懒用pyinstaller包装为.exe就算草草了事了hh。注意因为需要附带数据库所以要用 -D 方式。

垃圾分类小程序大概就告一段落了。虽然还有很多可以优化的地方,也还有很多idea在我脑海里,但我不想做了至少现在是懒了(掩面笑)。昨天看到了一个已完成的微信小程序,做得真的非常好,感觉已经到了我能想到的功能极致了(微信搜索小程序:“生活垃圾怎么分”)。真的很厉害,我还有很长的路要走。

 import sys, sqlite3
#from PyQt5.QtWidgets import (QWidget, QPushButton, QLabel, QLineEdit, QInputDialog, QApplication, QGridLayout)
from PyQt5.QtWidgets import *
from PyQt5 import QtSql
from PyQt5.QtSql import *
#from PyQt5.QtSql import QSqlDatabase, QSqlQuery class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
self.btn = QPushButton('Start',self)#按钮
self.btn.clicked.connect(self.showDialog) self.le = QLineEdit(self)#单行编辑框 text = QLabel('是') self.answer = QLineEdit(self) grid = QGridLayout()
grid.setSpacing(10) grid.addWidget(self.btn,1,0,1,3)#后两个参数可以设置行列跨度。这里的行列跨度是一行三列。
grid.addWidget(self.le,2,0)
grid.addWidget(text,2,1)
grid.addWidget(self.answer,2,2) self.setLayout(grid) self.setGeometry(300,300,350,350)
self.setWindowTitle('Input dialog')
self.show() def showDialog(self):
global text
text, ok = QInputDialog.getText(self, 'Input Dialog', 'Enter the rubbish:')
if ok:
self.le.setText(str(text))
self.showAnswer() def showAnswer(self):
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('Rubbish.db')
db.open()
query = QSqlQuery()
query.prepare(f'select Rclassification from Rub_cl where Rname="{text}"')#双引号是关键
query.exec()
#query.next()
#print(query.value(0))
if not query.exec():
query.lastError()#返回最后一个报错信息
else:
query.next()
'''
QSqlQuery返回的数据集,record是停在第一条记录之前的。
所以,在获得数据集后,必须执行next()或first()到第一条记录,
这时候record才是有效的。
'''
answertoprint = query.value(0)
self.answer.setText(str(answertoprint)) if __name__ == '__main__': app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

pyinstaller的命令行代码:

cd blablablablabla
pyinstaller -D(-F) -i icon.ico rubbish_classification.py

再补几个网址怕我以后忘了:

ico图标:https://www.easyicon.net/

Qt Documentation:https://doc.qt.io/qt-5/qsqlquery.html

QMessageBox类 Doc:http://www.kuqin.com/qtdocument/qmessagebox.html

DevDocs API Documentation(思否的开发者文档,我也不知道能干嘛先存着再说):https://docs.segmentfault.com/

我明天一定做大作业 :-)

PyQt5(2)、垃圾分类小程序(2)——初代窗口程序可执行文件的更多相关文章

  1. CS代码代写, 程序代写, java代写, python代写, c/c++代写,csdaixie,daixie,作业代写,代写

    互联网一线工程师程序代写 微信联系 当天完成特色: 互联网一线工程师 24-48小时完成.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor code,代码原创.参考课程sl ...

  2. 如何优化cocos2d程序的内存使用和程序大小

    在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区里面的人 ...

  3. 如何优化cocos2d程序的内存使用和程序大小:第一部分

    译者: 在我完成第一个游戏项目的时候,我深切地意识到“使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰”.而我刚开始接触cocos2d的时候,社区里面的人们讨论了一个 ...

  4. 如何优化cocos2d程序的内存使用和程序大小:第一部分_(转)

    译者: 在我完成第一个游戏项目的时候,我深切地意识到“使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰”.而我刚开始接触cocos2d的时候,社区里面的人们讨论了一个 ...

  5. 优化cocos2d/x程序的内存使用和程序大小

    本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/1043.html ☞ ...

  6. 怎样优化cocos2d/x程序的内存使用和程序大小

    再次感谢原创者:Steffen Itterheim.原创博客原文地址: http://www.learn-cocos2d.com/2012/11/optimize-memory-usage-bundl ...

  7. 使用 SailingEase WinForm 框架构建复合式应用程序(插件式应用程序)

    对于一些较小的项目,具备一定经验的开发人员应该能够设计和构建出便于进行维护和扩展的应用程序.但是,随着功能模块数量(以及开发维护这些部件的人员)的不断增加,对项目实施控制的难度开始呈指数级增长. Sa ...

  8. Cocos2dx集成于windows桌面窗口程序的步骤

    2D游戏需要做编辑器,而编辑器总是希望可以复用游戏中的逻辑来运行场景试看效果. 对于cocos2dx开发的程序,这个需求可以描述为: 实现一种方法,在桌面窗口程序中的某个控件上显示cocos2dx的场 ...

  9. 使用node-webkit开发exe窗口程序

    首发:个人博客,更新&纠错&回复 ====关于原生程序与壳中程序的议论begin==== 在所有用户windows机器上都能直接跑的程序,如果不采用微软系的语言,如VB,C++,C#等 ...

随机推荐

  1. For循环执行AFNetworking请求

    屏幕快照 2017-12-19 下午1.46.25.png 需求:如下操作打印的文档为 NSLog(@"开始");for(NSIntegeri =0; i <5; i++) ...

  2. eclipse打开jsp的方式怎么设置成默认

    https://jingyan.baidu.com/article/4ae03de34137be3eff9e6b93.html

  3. 04.Javascript——入门一些方法记录之iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...

  4. 在自己的linux服务器上面部署ShowDoc

    ShowDoc就是一个非常适合IT团队的在线文档分享工具,使用的是一款非常轻量级的关系数据库系统SQLite,支持多数SQL92标准.它可以加快团队之间沟通的效率. 但是把所有的接口文档写在第三方的服 ...

  5. css命名规范—CSS样式命名整理

    CSS样式命名整理 页面结构 容器: container/wrap整体宽度:wrapper页头:header内容:content页面主体:main页尾:footer导航:nav侧栏:sidebar栏目 ...

  6. Azure 8 月新公布

    Azure 8 月新发布:Cosmos DB 每分钟请求单位,存储的托管磁盘及促销,高级和标准磁盘存储大尺寸磁盘,高级磁盘存储小尺寸磁盘. Azure Cosmos DB:每分钟请求单位为您降低成本, ...

  7. shell 简单脚本 2

    #!/bin/bash source /etc/profile APPLICATIONS_HOME="/cpic/cpicapp/cpic_analy/jars" APPLICAT ...

  8. spark 的RDD各种转换和动作

    今天先把spark的各种基本转换和动作总结下,以后有时间把各种用法放上去. 1 RDD基本转换操作    map.flagMap.distinct coalesce.repartition coale ...

  9. RMQ求区间最大最小值

    #include<iostream> #include<cmath> #include<cstdio> #define N 50005 using namespac ...

  10. AppCrawler自动化遍历使用详解(版本2.1.0 )(转)

    AppCrawle是自动遍历的app爬虫工具,最大的特点是灵活性,实现:对整个APP的所有可点击元素进行遍历点击.   优点: 1.支持android和iOS, 支持真机和模拟器 2.可通过配置来设定 ...