日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

使用 PyQT5 来做一个简易版库存管理系统(二)

發(fā)布時(shí)間:2023/12/31 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 PyQT5 来做一个简易版库存管理系统(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇介紹了總體要做的功能,在這一篇中,我將先做出入庫查詢、庫存查詢的功能

一、界面規(guī)劃

窗體上邊結(jié)構(gòu)為索引條件,包含日期條件(開始日期至結(jié)束日期)、酒類型(下拉框)等等

窗體中部為查詢數(shù)據(jù)庫中獲取數(shù)據(jù)展示,此處控件選擇用?QTableWidget ,最后追加個(gè)導(dǎo)出excle的功能

二、正文

1.建窗體、設(shè)置窗體大小

class Ui_MainWindow1(QMainWindow):# 構(gòu)造方法def __init__(self):super(Ui_MainWindow1, self).__init__()self.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint) # 只顯示最小化和關(guān)閉按鈕self.setupUi(self) # 初始化窗體設(shè)置def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(762, 343)

2.在窗體中添加日期控件

self.dateEdit1 = QDateTimeEdit(QDateTime.currentDateTime().addMonths(-1), self.centralwidget)self.dateEdit1.setGeometry(QtCore.QRect(40, 10, 101, 21))self.dateEdit1.setDisplayFormat('yyyy-MM-dd')self.dateEdit1.setCalendarPopup(True)self.dateEdit2 = QDateTimeEdit(QDateTime.currentDateTime(), self.centralwidget)self.dateEdit2.setGeometry(QtCore.QRect(150, 10, 101, 21))self.dateEdit2.setDisplayFormat('yyyy-MM-dd')self.dateEdit2.setCalendarPopup(True)

3.添加下拉框控件

self.cboxKinds = QtWidgets.QComboBox(self.centralwidget)self.cboxKinds.setGeometry(QtCore.QRect(400, 10, 69, 22))self.cboxKinds.setObjectName("cboxKinds")

4.添加查詢、退出按鈕,按鈕點(diǎn)擊事件

self.btnQuery = QtWidgets.QPushButton(self.centralwidget)self.btnQuery.setGeometry(QtCore.QRect(649, 3, 51, 31))self.btnQuery.setObjectName("btnQuery")self.btnExit = QtWidgets.QPushButton(self.centralwidget)self.btnExit.setGeometry(QtCore.QRect(709, 3, 51, 31))self.btnExit.setObjectName("btnExit")self.btnExit.clicked.connect(MainWindow.close)self.btnQuery.clicked.connect(self.query) # 綁定查詢按鈕的單擊信號

5.添加表格控件

self.tbResult = QtWidgets.QTableWidget(self.centralwidget)self.tbResult.setGeometry(QtCore.QRect(0, 40, 761, 301))self.tbResult.setObjectName("tbResult")self.tbResult.setColumnCount(6)self.tbResult.setRowCount(0)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(1, item)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(2, item)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(3, item)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(4, item)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(5, item)item = QtWidgets.QTableWidgetItem()self.tbResult.setHorizontalHeaderItem(6, item)self.tbResult.setAlternatingRowColors(True) # 使表格顏色交錯(cuò)顯示self.tbResult.verticalHeader().setVisible(False) # 隱藏垂直標(biāo)題

6.定義方法獲取下拉框控件內(nèi)容(查詢酒類商品字典表獲取)

def bindCbox(self):self.cboxKinds.addItem("所有") # 設(shè)置臺賬類別的默認(rèn)首選項(xiàng)result = datapg.query("select goods_name from erp.goods") # 從臺賬類別中查詢數(shù)據(jù)for i in result: # 遍歷查詢結(jié)果self.cboxKinds.addItem(i[0]) # 在下拉列表中顯示臺賬類別

7.查詢按鈕方法(查詢?nèi)霂靻斡涗洷慝@取數(shù)據(jù))

def query(self):self.tbResult.setRowCount(0) # 清空表格中的所有行# stuname=self.editName.text() #kindname=self.cboxKinds.currentText() # 記錄選擇的臺賬類別strat_time=self.dateEdit1.date().toString("yyyyMMdd") #end_time = self.dateEdit2.date().toString("yyyyMMdd")print("SELECT goods_code,goods_name,goods_unit,goods_type,in_time,in_count,note FROM erp.in_store where in_time between '"+ strat_time + "' and '"+end_time+"'")if kindname=="所有":result = datapg.query("SELECT goods_code,goods_name,goods_unit,goods_type,in_time,in_count,note FROM erp.in_store where in_time between '"+ strat_time + "' and '"+end_time+"'")else:# 查詢所選酒的入庫信息result = datapg.query("SELECT goods_code,goods_name,goods_unit,goods_type,in_time,in_count,note FROM erp.in_store where goods_name=%s ",kindname)row = len(result) # 取得記錄個(gè)數(shù),用于設(shè)置表格的行數(shù)self.tbResult.setRowCount(row) # 設(shè)置表格行數(shù)self.tbResult.setColumnCount(7) # 設(shè)置表格列數(shù)# 設(shè)置表格的標(biāo)題名稱self.tbResult.setHorizontalHeaderLabels(['酒品編號', '酒名稱', '酒規(guī)格', '酒類型', '入庫時(shí)間', '入庫數(shù)量','摘要'])for i in range(row): # 遍歷行for j in range(self.tbResult.columnCount()): # 遍歷列data = QTableWidgetItem(str(result[i][j])) # 轉(zhuǎn)換后可插入表格self.tbResult.setItem(i, j, data) # 設(shè)置每個(gè)單元格的數(shù)據(jù)

8.數(shù)據(jù)庫連接(這里是用pg數(shù)據(jù)庫)

import psycopg2def open():db = psycopg2.connect(database="postgres", user="postgres", password="postgres", host="127.0.0.1", port="5432")return dbdef exec(sql):db=open() # 連接數(shù)據(jù)庫cursor = db.cursor() # 使用cursor()方法獲取操作游標(biāo)try:cursor.execute(sql) # 執(zhí)行增刪改的SQL語句db.commit() # 提交數(shù)據(jù)return 1 # 執(zhí)行成功except:db.rollback() # 發(fā)生錯(cuò)誤時(shí)回滾return 0 # 執(zhí)行失敗finally:cursor.close() # 關(guān)閉游標(biāo)db.close() # 關(guān)閉數(shù)據(jù)庫連接# 帶參數(shù)的精確查詢 def query(sql,*keys):db=open() # 連接數(shù)據(jù)庫cursor = db.cursor() # 使用cursor()方法獲取操作游標(biāo)cursor.execute(sql,keys) # 執(zhí)行查詢SQL語句result = cursor.fetchall() # 記錄查詢結(jié)果cursor.close() # 關(guān)閉游標(biāo)db.close() # 關(guān)閉數(shù)據(jù)庫連接return result # 返回查詢結(jié)果# 不帶參數(shù)的模糊查詢 def query2(sql):db=open() # 連接數(shù)據(jù)庫cursor = db.cursor() # 使用cursor()方法獲取操作游標(biāo)cursor.execute(sql) # 執(zhí)行查詢SQL語句result = cursor.fetchall() # 記錄查詢結(jié)果cursor.close() # 關(guān)閉游標(biāo)db.close() # 關(guān)閉數(shù)據(jù)庫連接return result # 返回查詢結(jié)果

9.導(dǎo)出exc

def exportToExcel(self):wb = openpyxl.Workbook()columnHeaders = []# create column header listfor j in range(self.tbResult.columnCount()):columnHeaders.append(self.tbResult.horizontalHeaderItem(j).text())df = pd.DataFrame(columns=columnHeaders)print(df)# create dataframe object recordsetfor row in range(self.tbResult.rowCount()):for col in range(self.tbResult.columnCount()):df.at[row, columnHeaders[col]] = self.tbResult.item(row, col).text()df.to_excel(r'D:\deneme.xlsx', index=False)

三.效果圖

總結(jié)

以上是生活随笔為你收集整理的使用 PyQT5 来做一个简易版库存管理系统(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文在线视频 | 超碰女| 国产一区二区三区视频播放 | av影视网 | 欧美性xxxxx极品少妇 | 免费超爽大片黄 | 亚洲男人天堂网站 | 久久久视 | 青青操在线观看 | 黑人操日本 | 特黄一区二区三区 | 国产一区二区伦理 | 狠狠夜夜 | 亚洲成av人片一区二区梦乃 | 西西午夜 | 91精品国产一区二区 | 91精品婷婷国产综合久久 | 免费一级毛片麻豆精品 | 欧美整片第一页 | 浪浪视频在线观看 | 五月天看片 | missav|免费高清av在线看 | 调教91 | 日韩人妻精品一区二区 | 朝桐光av一区二区三区 | 欧美视频免费在线 | 欧美日韩高清一区二区 国产亚洲免费看 | 毛片毛片毛片毛片毛片 | 免费成人在线观看 | 婷婷激情成人 | 欧美成人视屏 | 在线人成| 黄色网炮| 日日碰狠狠添天天爽无码 | 久热99| 日本免费福利视频 | 中文字幕精品三级久久久 | 亚洲天堂高清 | 日本a在线播放 | 黑人玩弄人妻一区二区绿帽子 | 91av成人| 起碰在线| av高清在线 | 午夜影院在线播放 | 久久久久亚洲无码 | www性 | 国产精品久久久久99 | 在线免费你懂的 | 在线午夜 | 91久久综合| 热久久精品免费视频 | 五月天狠狠操 | 天天艹天天爽 | 人妻无码久久一区二区三区免费 | 日韩美女免费视频 | 另类视频在线观看+1080p | 亚洲成人影音 | 男人操女人视频网站 | 国产va在线观看 | 色综合中文字幕 | 69re视频 | 自拍中文字幕 | 亚洲精品一级二级 | 欧美日韩在线a | 视频一区亚洲 | 在线播放黄色网址 | 脱裤吧导航 | 午夜网址| 亚洲25p | 一区二区三区四区免费 | 亚洲视频手机在线观看 | 欧美30p| 国产激情无套内精对白视频 | 国产精品高潮AV无码 | 一区二区三区在线免费视频 | 蜜桃成熟时李丽珍国语 | 3d成人动漫在线观看 | 进去里片欧美 | 艳母日本动漫在线观看 | 国产精品1 | 猛1被调教成公厕尿便失禁网站 | 久久精品黄色片 | 色av综合| 人妻视频一区二区三区 | 欧美专区在线播放 | 免费不卡视频 | 亚洲清纯国产 | 97超在线 | 97在线观看免费视频 | 亚洲精品电影院 | 美女18毛片| 亚洲综合自拍偷拍 | 蜜桃精品成人影片 | 黄色av网站免费观看 | 国产一毛片 | 91日韩在线| a一级免费视频 | 亚洲精品久久久久中文字幕二区 | 国产小视频网站 |