用Pyqt5自制桌面小工具

python.jpg

背景

工作中經(jīng)常遇到一個小環(huán)節(jié)--測試數(shù)據(jù)驗(yàn)證儿捧。
例如檢測游戲是否接入支付接口。

  1. 運(yùn)營人員從CP那邊拿到游戲交給測試人員測試挑宠。
  2. 測試人員測試充值菲盾;并發(fā)郵件出來需要數(shù)據(jù)驗(yàn)證。
  3. 技術(shù)進(jìn)行數(shù)據(jù)查詢并驗(yàn)證各淀;并郵件告知是否接入支付接口懒鉴。
    若驗(yàn)證失敗碎浇;上面的環(huán)節(jié)又要重復(fù)一遍临谱。若在 第一步 能進(jìn)行數(shù)據(jù)驗(yàn)證工作。這樣就可以釋放后面兩個步驟奴璃;也避免驗(yàn)證失敗需要回退悉默;這樣提高工作效率,節(jié)約時間苟穆。但運(yùn)營人員非技術(shù)抄课;所以需要類似小工具進(jìn)行操作驗(yàn)證。
    image.png

如何自制小工具

我選擇的是Pyqt5雳旅;Pyqt5是Qt移植到Python上的跟磨。提供了一個良好的窗口控件集合。
安裝環(huán)境操作:http://www.reibang.com/p/20f8da41af91

# 可使用douban鏡像快速下載pyqt5
pip install -i https://pypi.douban.com/simple pyqt5
pip install -i https://pypi.douban.com/simple pyqt5-tools

學(xué)習(xí)資料:http://www.xdbcb8.com/pyqt5/
百度云下載 PyQt5快速開發(fā)與實(shí)戰(zhàn).pdf提取碼:qay5

1. 采用QT Designer設(shè)計界面

image.png

2. 編譯ui文件

設(shè)計好了界面攒盈;保存文件為lottu06.ui抵拘;需要編譯成py文件。在 cmd 命令行執(zhí)行

pyuic5 -o E:\pyqt\lottu06.py E:\pyqt\lottu06.ui

3. 編寫信號與槽

本例填寫appid型豁,qn僵蛛。再點(diǎn)擊按鈕;彈出對話框提示偷遗。
在生成的lottu06.py文件進(jìn)行添加

#對按鈕 添加信號
self.pushButton.clicked.connect(Form.lottu)
# 編寫槽方法
   def lottu(self):
        try:
            username =UserName
            passname = PWD
            ip = IP
            datebasename = Oracle服務(wù)名
            ipport = 端口
            connStatus = 'OK'
            conStr = username+'/'+passname+'@'+ip+':'+ipport+'/'+datebasename
            conn = oracle.connect(conStr)
            appid = self.lineEdit.text()
            qn = self.lineEdit_2.text()
            if self.radioButton.isChecked():
                sql = "select count(1) from tbl_android_pay_log where appid =" + appid + " and qn = '" + qn + "' and pay_time >= trunc(sysdate)"
            else:
                sql = "select count(1) from tbl_ios_pay_log where appid =" + appid + " and qn = '" + qn + "' and pay_time >= trunc(sysdate)"
            cursor = conn.cursor()
            cursor.execute(sql)
            result = cursor.fetchone()
            if result[0] == 0:
                QMessageBox.information(self, '信息提示框', 'NO, 未接支付接口')
            else:
                QMessageBox.information(self, '信息提示框', 'OK, 成功接支付')
            cursor.close()
            conn.close()
        except oracle.Error as e:
            connStatus = e
            print(connStatus)

本例連的數(shù)據(jù)庫是Oracle墩瞳;還需要安裝 cx_Oracle驼壶;
在使用界面與邏輯分離氏豌;編寫lottu.py文件

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from lottu06 import Ui_Form


class MyMainWindow(QMainWindow, Ui_Form):
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.setupUi(self)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWin = MyMainWindow()
    myWin.show()
    sys.exit(app.exec_())

4. 執(zhí)行結(jié)果

image.png

5. 使用pyinstaller打包成exe

# 【拓展】在命令行執(zhí)行
pyinstaller -F -w -i E:\pyqt\images\cartoon1.ico E:\pyqt\lottu.py

即可以生成桌面小工具exe文件。
填寫對應(yīng)的appid热凹,qn即可泵喘。


image.png

加載dll資源

由于python中連接oracle數(shù)據(jù)庫使用第三方庫文件cx_Oracle泪电;上面生成的小工具exe;在未安裝Oracle客戶端的電腦執(zhí)行會報錯"DPI-1407"的錯誤碼纪铺。你若把文件 oci.dll相速,oraociei11.dll拷貝到對應(yīng)的目錄下也是可以執(zhí)行成功。為你機(jī)智點(diǎn)贊鲜锚。當(dāng)然可以使用pyinstaller打包附帶DLL突诬、圖標(biāo)和壓縮EXE方法

  1. 生成spec配置文件
cd /d e:\pyqt
pyinstaller -F E:\pyqt\lottu.py
  1. 配置spec配置文件
    在datas行修改
datas=[('oci.dll','.'),('oraociei11.dll','.')]
  1. 利用upx命令壓縮exe
    upx下載
    其中E:\tool\upx391w為upx下載解壓目錄
pyinstaller -F E:\pyqt\lottu.spec --upx E:\tool\upx391w
  1. 生成exe工具
    這個時候測試的工具帶有的dll
pyinstaller -F -w E:\pyqt\lottu.spec
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芜繁,隨后出現(xiàn)的幾起案子旺隙,更是在濱河造成了極大的恐慌,老刑警劉巖骏令,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔬捷,死亡現(xiàn)場離奇詭異,居然都是意外死亡榔袋,警方通過查閱死者的電腦和手機(jī)周拐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凰兑,“玉大人妥粟,你說我怎么就攤上這事±艄唬” “怎么了罕容?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稿饰。 經(jīng)常有香客問我锦秒,道長,這世上最難降的妖魔是什么喉镰? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任旅择,我火速辦了婚禮,結(jié)果婚禮上侣姆,老公的妹妹穿的比我還像新娘生真。我一直安慰自己,他們只是感情好捺宗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布柱蟀。 她就那樣靜靜地躺著,像睡著了一般蚜厉。 火紅的嫁衣襯著肌膚如雪长已。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音术瓮,去河邊找鬼康聂。 笑死,一個胖子當(dāng)著我的面吹牛胞四,可吹牛的內(nèi)容都是我干的恬汁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辜伟,長吁一口氣:“原來是場噩夢啊……” “哼氓侧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起导狡,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤甘苍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烘豌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體载庭,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年廊佩,在試婚紗的時候發(fā)現(xiàn)自己被綠了囚聚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡标锄,死狀恐怖顽铸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情料皇,我是刑警寧澤谓松,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站践剂,受9級特大地震影響鬼譬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逊脯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一优质、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧军洼,春花似錦巩螃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至甘桑,卻和暖如春拍皮,著一層夾襖步出監(jiān)牢的瞬間歹叮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工春缕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盗胀,地道東北人艘蹋。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓锄贼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親女阀。 傳聞我的和親對象是個殘疾皇子宅荤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容