最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用pyqt寫(xiě)帶界面工具的示例代碼

 更新時(shí)間:2017年10月23日 10:54:07   作者:北風(fēng)之神0509  
本篇文章主要介紹了python使用pyqt寫(xiě)帶界面工具的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

上篇介紹的使用python自帶tkinter包,來(lái)寫(xiě)帶界面的工具。

此篇介紹使用pyqt來(lái)開(kāi)發(fā)測(cè)試工具。

tkinter的好處是python官方自帶,上手容易(但手寫(xiě)控件復(fù)雜),布局和擺放都不直觀和容易,因?yàn)槭窍袼刈鴺?biāo)定位,需要花較長(zhǎng)時(shí)間在界面開(kāi)發(fā)上。pyqt是第三方gui開(kāi)發(fā)工具,是目前公認(rèn)的python上最好的客戶端界面開(kāi)發(fā)工具,因?yàn)榭丶峭ㄟ^(guò)qt設(shè)計(jì)師的手動(dòng)拖拽,調(diào)整顏色 字體 大小等樣式也很簡(jiǎn)單,不需要去代碼層面來(lái)寫(xiě)大量界面代碼,真正的所見(jiàn)即所得。

學(xué)習(xí)pyqt需要安裝這些文件,pyqt是python第三方包,eric是qt設(shè)計(jì)界面,sip在工具打包時(shí)候需要用到。

安裝好環(huán)境后,雙擊運(yùn)行eric4.bat文件(我這里是eric4版本)

運(yùn)行eric4.bat文件后的界面,點(diǎn)擊designer圖標(biāo),進(jìn)入qt設(shè)計(jì)視圖

此圖為qt設(shè)計(jì)師界面

通過(guò)拖拽左側(cè)的控件列表中的元件到ui中就可以。布局完成界面達(dá)到滿意的效果后,點(diǎn)擊菜單欄的文件另存為,保存為ui文件,文件后綴默認(rèn)是.ui。

使用cmd 命令將.ui文件轉(zhuǎn)換為.py文件,命令是

pyuic4 -o syui.py suoyouxiangmu.ui 

前面是py文件名稱,后面是剛才保存的ui的文件名,執(zhí)行此命令后會(huì)看到文件夾多了一個(gè)叫syui.py的文件。

打開(kāi)文件,可以看到文件的大致內(nèi)容,截圖如下

要想把從ui轉(zhuǎn)換得到的py文件,顯示出界面來(lái),還需要加入代碼

不過(guò),強(qiáng)烈建議不要這么寫(xiě),不要把工具的功能代碼和ui轉(zhuǎn)換得到的py代碼寫(xiě)在一個(gè)文件,因?yàn)樵陂_(kāi)發(fā)工具時(shí)候可能經(jīng)常用調(diào)整界面不斷的把ui轉(zhuǎn)換成py代碼 ,如果代碼寫(xiě)在這文件,那么之前寫(xiě)的功能代碼將會(huì)被覆蓋了,把紅框子中這段代碼和后代功能代碼寫(xiě)在另外一個(gè)文件。

pyqt中將一個(gè)函數(shù)和按鈕綁定的語(yǔ)法是 mainwindow.pushButton_2.clicked.connect(function)

下面介紹一些獲取控件的值和給控件賦默認(rèn)值的方法

mainwindow.lineEdit.setText((u"zg 額外abc")) #給輸入框賦值

mainwindow.textEdit.setPlainText('') #給texedit賦值

mainwindow.comboBox.setCurrentIndex(2) #給下拉框賦值

mainwindow.checkBox.setChecked(1) #給復(fù)選框checkbox賦值,可以填寫(xiě)True或者False 或0 ,1

 
print unicode(QString(mainwindow.lineEdit.text()))  #獲取輸入框的值
unicode(QString(mainwindow.textEdit.toPlainText()))#獲textedit的值
print unicode(QString(mainwindow.comboBox.currentText()))#獲取下拉框的值

print mainwindow.comboBox.currentIndex()       #獲取下拉框的index
if mainwindow.checkBox.isChecked()==True  獲取復(fù)選框checkbox的值

功能代碼該怎么寫(xiě)就怎么寫(xiě),與普通純腳本的代碼沒(méi)有區(qū)別。如果事先把后臺(tái)腳本功能寫(xiě)好了,加入到界面來(lái)只需要花很少的時(shí)間。需要說(shuō)明的是,一些執(zhí)行時(shí)間比較長(zhǎng)的函數(shù)例如循環(huán)requests,或者接口的本上響應(yīng)時(shí)間很大,需要用到Qthread子線程,否則使用普通的函數(shù)會(huì)把客戶端界面卡死一段時(shí)間直至函數(shù)運(yùn)行結(jié)束。

下面來(lái)展示我使用pyqt做的幾個(gè)工具。我這幾個(gè)工具,都是左邊界面右邊控制臺(tái)顯示的形式,非常方便在一個(gè)界面就能看到運(yùn)行結(jié)果,不需要在界面操作然后去python ide的控制臺(tái)去看結(jié)果。

此工具是將字符串進(jìn)行base64編碼或解碼的工具,因?yàn)槲覀児镜慕涌诙际乔岸藗鱦son的base64編碼字符串給后臺(tái),后臺(tái)再進(jìn)行base64編碼的形式,在做測(cè)試時(shí)候,經(jīng)常會(huì)發(fā)來(lái)base64加密的字符串,如果不解密完全看不懂請(qǐng)求的什么意思什么功能。如果你抓我們公司項(xiàng)目的登錄接口的包,會(huì)完全不知所措,因?yàn)榇蠖鄶?shù)web都是抓包出來(lái)可以看到 username:xxxxx password:xxxxx yanzhenma:xxxxx的形式,我們公司的需要base64解碼后才能看得到鍵值對(duì),因?yàn)槿绱嗽蛩宰隽艘粋€(gè)工具;雖然網(wǎng)上大把的各種轉(zhuǎn)碼網(wǎng)站,但每次用時(shí)候去打開(kāi)一個(gè)網(wǎng)頁(yè)不方便,此工具是引用了python 自帶的base64包,不然我自己寫(xiě)代碼轉(zhuǎn)換base64,也不知道base64到底是怎么個(gè)編碼規(guī)則的。

此工具是接口測(cè)試,進(jìn)行g(shù)et 和post請(qǐng)求,類似postman的功能和jmeter的接口測(cè)試功能。工具在后臺(tái)代碼中已處理cookie,只需要執(zhí)行一次登錄接口后,就可以操作其他的接口。第二個(gè)post的加了個(gè)base64的勾選,主要是為考慮工具通用性,不勾選base64適合大部分公司,當(dāng)我們公司的如果不勾選,后臺(tái)無(wú)法對(duì)一個(gè)不是base64加密的字符串進(jìn)行base64解碼,當(dāng)然會(huì)返回錯(cuò)誤狀態(tài)碼。工具是利用reqeusts做的,此工具利用了Qthread,否則遇上響應(yīng)時(shí)間大的接口會(huì)卡死界面。

此工具是用客戶端來(lái)代替本應(yīng)該是app端完成的功能。正常測(cè)試是需要把txt中的一個(gè)字符串用工具生成二維碼圖片,然后用app掃描二維碼,如果子碼和父碼比例是20比1,需要掃每生成一個(gè)二維碼然后app掃描一次,完成一個(gè)過(guò)程需要10分鐘左右。工具是直接一次性賦值txt20行子嗎字符串,然后復(fù)制一個(gè)父碼字符串到輸入框,點(diǎn)擊確認(rèn)關(guān)聯(lián),后臺(tái)會(huì)自動(dòng)分割20個(gè)子碼的網(wǎng)址,并且取出網(wǎng)址中的碼值,這個(gè)地方主要利用正則表達(dá)式分割出20個(gè)子碼碼值,然后按照接口參數(shù)的格式post到服務(wù)端,整個(gè)過(guò)程20秒就可以完成。是很快吧,這個(gè)app由于需要掃碼的原因無(wú)法使用appium,用接口來(lái)代替app的功能,對(duì)于測(cè)試業(yè)務(wù)流程節(jié)約大量時(shí)間。

當(dāng)然這種工具的方法還是只能一次次的進(jìn)行關(guān)聯(lián),后來(lái)因?yàn)橛辛诵碌男枨螅沂褂玫姆椒ㄊ羌兡_本,讀取兩個(gè)記事本,每個(gè)記事本20000行,一次性的讀取兩個(gè)記事本內(nèi)容后多次進(jìn)行指定行的相互自動(dòng)關(guān)聯(lián),假如按20:1的比例關(guān)聯(lián),關(guān)聯(lián)20000個(gè)碼值,一個(gè)接口一般0.2秒就可以返回接口,使用單線程requests也就幾分鐘吧。

此工具是測(cè)試項(xiàng)目的app功能的部分功能,把a(bǔ)pp多個(gè)界面的功能聚合到一個(gè)界面,輔助測(cè)試,比如測(cè)試報(bào)警的短信功能,用app填寫(xiě)各種表單需要2分鐘,用工具只需要2秒鐘,因?yàn)楹笈_(tái)處理了大量默認(rèn)參數(shù)。

此工具是檢測(cè)線上服務(wù)器服務(wù)運(yùn)行狀態(tài)的工具,可以不間斷的檢測(cè)各個(gè)接口的返回是否正常,數(shù)據(jù)庫(kù)狀態(tài)是否正常,web服務(wù)器是否有異常。只需要設(shè)置指定的時(shí)間就可以自動(dòng)循環(huán)去檢測(cè),把每天的每條命令的請(qǐng)求寫(xiě)到一個(gè)log日志中。一旦有異常將捕獲到的異常,發(fā)送給相關(guān)的郵件人,并且把每天的每條命令的請(qǐng)求寫(xiě)到一個(gè)log日志中,并發(fā)送短信給相關(guān)人員,避免出問(wèn)題了還不知情。其中郵件用的是python的smtlib的郵件功能,短信是讓php做了一個(gè)發(fā)短信的接口,我只需要按制定的格式post相關(guān)內(nèi)容到php,就可以發(fā)短信通知大家了。

之前做這個(gè)工具是做成了windows service的形式,把服務(wù)安裝到windows的服務(wù)中靜默運(yùn)行,但是沒(méi)要這種客戶端方式可控性強(qiáng)。

此工具是給一個(gè)朋友做的功能,他需要不在cmd中運(yùn)行cmd命令。用的是subprocess,代碼比較短在此貼出代碼了。

import subprocess
ui.lineEdit_14.setText((u"ping 127.0.0.1"))
ui.lineEdit_15.setText((u"https://180.42.98.2/uniform/user-login.action"))

class CmdThread(QThread):
  _signal = pyqtSignal(str)
  def __int__(self):
    super(CmdThread,self).__init__()

  def run(self):
    cmd_str=unicode(QString(ui.lineEdit_14.text()))
    print u'\n發(fā)送的cmd命令是: ',cmd_str
    try:
      ot=subprocess.check_output(cmd_str, shell=True)

      print ot.decode('gbk').encode('utf8')
    except Exception,e:
      print e
    print '********************************************'

cmdThread=CmdThread()
cmdThread._signal.connect(chuli)           #####cmd某些命令會(huì)消耗大量時(shí)間,需要用到Qthread,chuli是一個(gè)函數(shù),鏈接右邊黑色控制臺(tái)
def cmd():
  cmdThread.start()

此工具是百度發(fā)帖,具體的實(shí)現(xiàn)代碼在另外的一個(gè)百度回帖博客中已經(jīng)介紹了,由于此賬號(hào)是從淘寶買(mǎi)的,并且在調(diào)試代碼時(shí)候,已經(jīng)被百度永久性封禁了回帖功能,所以返回的不是errcode0,220012是賬號(hào)被禁用回帖功能的意思。

最后介紹下pyqt工具的打包代碼,使用py2exe打包成exe客戶端。在cmd運(yùn)行

#coding=utf-8
from distutils.core import setup
import py2exe
import glob

#python setup.py py2exe --includes sip   圖標(biāo)要手動(dòng)復(fù)制圖片到dist文件夾去

setup(
# targets to build
  windows = [{"script":"dysyui.py", "icon_resources": [(1, "logo1.ico")]} ],
  options = { "py2exe":{"dll_excludes":["MSVCP90.dll"],"bundle_files": 3,}},
  data_files = [("imageformats",glob.glob("C:\Python27\Lib\site-packages\PyQt4\plugins\imageformats\*.dll"))]
)

好了,關(guān)于pyqt就寫(xiě)這么多了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python簡(jiǎn)單分割文件的方法

    python簡(jiǎn)單分割文件的方法

    這篇文章主要介紹了python簡(jiǎn)單分割文件的方法,涉及Python針對(duì)文件的讀取與寫(xiě)入技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 用python讀寫(xiě)excel的方法

    用python讀寫(xiě)excel的方法

    這篇文章主要介紹了用python讀寫(xiě)excel的方法,涉及xlrd模塊與xlwt模塊的應(yīng)用,具有一定的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • Python高并發(fā)解決方案實(shí)現(xiàn)過(guò)程詳解

    Python高并發(fā)解決方案實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了Python高并發(fā)解決方案實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python調(diào)用短信貓控件實(shí)現(xiàn)發(fā)短信功能實(shí)例

    python調(diào)用短信貓控件實(shí)現(xiàn)發(fā)短信功能實(shí)例

    這篇文章主要介紹了python調(diào)用短信貓控件實(shí)現(xiàn)發(fā)短信功能實(shí)例,需要的朋友可以參考下
    2014-07-07
  • 基于Python3 逗號(hào)代碼 和 字符圖網(wǎng)格(詳談)

    基于Python3 逗號(hào)代碼 和 字符圖網(wǎng)格(詳談)

    下面小編就為大家?guī)?lái)一篇基于Python3 逗號(hào)代碼 和 字符圖網(wǎng)格(詳談)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • python3基礎(chǔ)之集合set詳解

    python3基礎(chǔ)之集合set詳解

    大家好,本篇文章主要講的是python3基礎(chǔ)之集合set詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python如何避免文件同名產(chǎn)生覆蓋

    Python如何避免文件同名產(chǎn)生覆蓋

    這篇文章主要介紹了Python如何避免文件同名產(chǎn)生覆蓋,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Pytorch?autograd與邏輯回歸的實(shí)現(xiàn)詳解

    Pytorch?autograd與邏輯回歸的實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Pytorch?autograd與邏輯回歸的實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Python使用統(tǒng)計(jì)函數(shù)繪制簡(jiǎn)單圖形實(shí)例代碼

    Python使用統(tǒng)計(jì)函數(shù)繪制簡(jiǎn)單圖形實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Python使用統(tǒng)計(jì)函數(shù)繪制簡(jiǎn)單圖形的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python對(duì)多個(gè)sheet表進(jìn)行整合實(shí)例講解

    Python對(duì)多個(gè)sheet表進(jìn)行整合實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python對(duì)多個(gè)sheet表進(jìn)行整合實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04

最新評(píng)論

顺义区| 邻水| 永丰县| 容城县| 临安市| 中牟县| 平湖市| 利辛县| 威信县| 嵊泗县| 巴青县| 和平区| 女性| 溧阳市| 德昌县| 民乐县| 金阳县| 行唐县| 无为县| 方城县| 大方县| 湾仔区| 兴城市| 逊克县| 五河县| 迭部县| 聂拉木县| 郸城县| 淅川县| 平陆县| 闽清县| 抚州市| 信阳市| 曲周县| 若尔盖县| 太白县| 定远县| 阳高县| 碌曲县| 鹤岗市| 绩溪县|