欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用pyqt寫帶界面工具的示例代碼

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

上篇介紹的使用python自帶tkinter包,來寫帶界面的工具。

此篇介紹使用pyqt來開發(fā)測試工具。

tkinter的好處是python官方自帶,上手容易(但手寫控件復(fù)雜),布局和擺放都不直觀和容易,因為是像素坐標(biāo)定位,需要花較長時間在界面開發(fā)上。pyqt是第三方gui開發(fā)工具,是目前公認(rèn)的python上最好的客戶端界面開發(fā)工具,因為控件是通過qt設(shè)計師的手動拖拽,調(diào)整顏色 字體 大小等樣式也很簡單,不需要去代碼層面來寫大量界面代碼,真正的所見即所得。

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

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

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

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

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

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

pyuic4 -o syui.py suoyouxiangmu.ui 

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

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

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

不過,強烈建議不要這么寫,不要把工具的功能代碼和ui轉(zhuǎn)換得到的py代碼寫在一個文件,因為在開發(fā)工具時候可能經(jīng)常用調(diào)整界面不斷的把ui轉(zhuǎn)換成py代碼 ,如果代碼寫在這文件,那么之前寫的功能代碼將會被覆蓋了,把紅框子中這段代碼和后代功能代碼寫在另外一個文件。

pyqt中將一個函數(shù)和按鈕綁定的語法是 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賦值,可以填寫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的值

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

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

此工具是將字符串進行base64編碼或解碼的工具,因為我們公司的接口都是前端傳json的base64編碼字符串給后臺,后臺再進行base64編碼的形式,在做測試時候,經(jīng)常會發(fā)來base64加密的字符串,如果不解密完全看不懂請求的什么意思什么功能。如果你抓我們公司項目的登錄接口的包,會完全不知所措,因為大多數(shù)web都是抓包出來可以看到 username:xxxxx password:xxxxx yanzhenma:xxxxx的形式,我們公司的需要base64解碼后才能看得到鍵值對,因為如此原因所以做了一個工具;雖然網(wǎng)上大把的各種轉(zhuǎn)碼網(wǎng)站,但每次用時候去打開一個網(wǎng)頁不方便,此工具是引用了python 自帶的base64包,不然我自己寫代碼轉(zhuǎn)換base64,也不知道base64到底是怎么個編碼規(guī)則的。

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

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

當(dāng)然這種工具的方法還是只能一次次的進行關(guān)聯(lián),后來因為有了新的需求,我使用的方法是純腳本,讀取兩個記事本,每個記事本20000行,一次性的讀取兩個記事本內(nèi)容后多次進行指定行的相互自動關(guān)聯(lián),假如按20:1的比例關(guān)聯(lián),關(guān)聯(lián)20000個碼值,一個接口一般0.2秒就可以返回接口,使用單線程requests也就幾分鐘吧。

此工具是測試項目的app功能的部分功能,把app多個界面的功能聚合到一個界面,輔助測試,比如測試報警的短信功能,用app填寫各種表單需要2分鐘,用工具只需要2秒鐘,因為后臺處理了大量默認(rèn)參數(shù)。

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

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

此工具是給一個朋友做的功能,他需要不在cmd中運行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某些命令會消耗大量時間,需要用到Qthread,chuli是一個函數(shù),鏈接右邊黑色控制臺
def cmd():
  cmdThread.start()

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

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

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

#python setup.py py2exe --includes sip   圖標(biāo)要手動復(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就寫這么多了。

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

相關(guān)文章

  • Python 中 Shutil 模塊詳情

    Python 中 Shutil 模塊詳情

    這篇文章主要介紹了 Python 中 Shutil 模塊,shutil可以簡單地理解為sh + util,shell工具的意思。shutil模塊是對os模塊的補充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。下面來看文章詳細(xì)內(nèi)容
    2021-11-11
  • Python中g(shù)event模塊協(xié)程使用

    Python中g(shù)event模塊協(xié)程使用

    協(xié)程是一種用戶態(tài)的輕量級線程,本文主要介紹了Python中g(shù)event模塊協(xié)程使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 基于Python實現(xiàn)人像雪景小程序

    基于Python實現(xiàn)人像雪景小程序

    這篇文章主要介紹了通過Python實現(xiàn)的人像雪景小程序,小程序還會自動生成每一幀雪花飄落的圖片,跟GIF動態(tài)雪花人像圖,還不用自己錄制視頻看效果。感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • Python利用字典將兩個通訊錄文本合并為一個文本實例

    Python利用字典將兩個通訊錄文本合并為一個文本實例

    這篇文章主要介紹了Python利用字典將兩個通訊錄文本合并為一個文本實例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 使用Python的內(nèi)建模塊collections的教程

    使用Python的內(nèi)建模塊collections的教程

    這篇文章主要介紹了使用Python的內(nèi)建模塊collections的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python實戰(zhàn)之整蠱神器合集加速友盡

    Python實戰(zhàn)之整蠱神器合集加速友盡

    讀萬卷書不如行萬里路,學(xué)的扎不扎實要通過實戰(zhàn)才能看出來,本篇文章手把手帶用python來做幾個整蠱的小程序,大家可以在過程中查缺補漏,看看自己掌握程度怎么樣,發(fā)給朋友加固一下友誼
    2021-10-10
  • 轉(zhuǎn)換科學(xué)計數(shù)法的數(shù)值字符串為decimal類型的方法

    轉(zhuǎn)換科學(xué)計數(shù)法的數(shù)值字符串為decimal類型的方法

    今天小編就為大家分享一篇轉(zhuǎn)換科學(xué)計數(shù)法的數(shù)值字符串為decimal類型的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python龍貝格法求積分實例

    Python龍貝格法求積分實例

    今天小編就為大家分享一篇Python龍貝格法求積分實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Opencv圖像處理方法最全總結(jié)

    Opencv圖像處理方法最全總結(jié)

    這篇文章主要給大家介紹了關(guān)于Opencv圖像處理方法的相關(guān)資料,OpenCV是一個開源的計算機視覺庫,提供了很多圖像處理、計算機視覺和機器學(xué)習(xí)等方面的函數(shù)和工具,被廣泛應(yīng)用于各種計算機視覺領(lǐng)域的研究和應(yīng)用中,需要的朋友可以參考下
    2024-06-06
  • pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化

    pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化

    這篇文章主要介紹了pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們也有非常好的幫助,需要的朋友可以參考下
    2021-05-05

最新評論