python垃圾分类小程序_PyQt5(2)、垃圾分类小程序(2)——初代窗口程序可执行文件...

又是一天时间(又没做大作业)。今天的心路历程:(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在我脑海里,但我不想做了至少现在是懒了(掩面笑)。昨天看到了一个已完成的微信小程序,做得真的非常好,感觉已经到了我能想到的功能极致了(微信搜索小程序:“生活垃圾怎么分”)。真的很厉害,我还有很长的路要走。

1 importsys, sqlite32 #from PyQt5.QtWidgets import (QWidget, QPushButton, QLabel, QLineEdit, QInputDialog, QApplication, QGridLayout)

3 from PyQt5.QtWidgets import *

4 from PyQt5 importQtSql5 from PyQt5.QtSql import *

6 #from PyQt5.QtSql import QSqlDatabase, QSqlQuery

7

8 classExample(QWidget):9 def __init__(self):10 super().__init__()11 self.initUI()12

13 definitUI(self):14 self.btn = QPushButton('Start',self)#按钮

15 self.btn.clicked.connect(self.showDialog)16

17 self.le = QLineEdit(self)#单行编辑框

18

19 text = QLabel('是')20

21 self.answer =QLineEdit(self)22

23 grid =QGridLayout()24 grid.setSpacing(10)25

26 grid.addWidget(self.btn,1,0,1,3)#后两个参数可以设置行列跨度。这里的行列跨度是一行三列。

27 grid.addWidget(self.le,2,0)28 grid.addWidget(text,2,1)29 grid.addWidget(self.answer,2,2)30

31 self.setLayout(grid)32

33 self.setGeometry(300,300,350,350)34 self.setWindowTitle('Input dialog')35 self.show()36

37 defshowDialog(self):38 globaltext39 text, ok = QInputDialog.getText(self, 'Input Dialog', 'Enter the rubbish:')40 ifok:41 self.le.setText(str(text))42 self.showAnswer()43

44 defshowAnswer(self):45 db = QSqlDatabase.addDatabase('QSQLITE')46 db.setDatabaseName('Rubbish.db')47 db.open()48 query =QSqlQuery()49 query.prepare(f'select Rclassification from Rub_cl where Rname="{text}"')#双引号是关键50 query.exec()51 #query.next()

52 #print(query.value(0))

53 if not query.exec():54 query.lastError()#返回最后一个报错信息

55 else:56 query.next()57 '''

58 QSqlQuery返回的数据集,record是停在第一条记录之前的。59 所以,在获得数据集后,必须执行next()或first()到第一条记录,60 这时候record才是有效的。61 '''

62 answertoprint =query.value(0)63 self.answer.setText(str(answertoprint))64

65

66

67 if __name__ == '__main__':68

69 app =QApplication(sys.argv)70 ex =Example()71 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/

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值