利用pyqt來編寫屬於自己的python Gui界面
本人是做介面測試的,而很多介面現在對於安全方面有了很大的重視,所以往往在介面層上做了一些加密,比如MD5、AES、SHA之類的加密,而每次加密,都是自己利用python編寫腳本而生成sign值,這往往對於自己在工具效率上無法提高,所以就產生了自己編寫一個簡單的加密+請求介面的小工具的想法。
因為本人現在主要是以python為主,所以在選擇的時候,就從這方面入手。許多人在學習如何創建一個 GUI 應用的時候都感到十分的困難。其中最重要的原因是,他們不知道應該從何下手。大多數的教程都只有文字,但事實上僅僅依靠文字很難學會 GUI 編程,因為 GUI 應用大多數都是基於視覺上的。
本篇文章,主要是分享下自己在編寫這個小工具過程中的心得。做出來的效果如下:
工具效果圖
做出來的雖然有點簡陋,但是可以做為借鑒、完善,接下來就是工具製作的方法:
1、Gui界面的製作
首先要先安裝python環境,然後再eric6,涉及到這些環境的安裝可以自行百度去尋找方法,在此不會涉及到環境安裝的方法,環境安裝完成後,打開QT Designer(在eric6根目錄下點擊eric6.pyc或者在python根目錄下點擊打開eric.bat):
QT Designer
打開QT Designer後,選擇Main Window,點擊創建:
創建Main Window
創建好你的MainWindow後:
MainWindow
在MainWindow界面的右邊QObject,那就是定義這個對象的名字的地方。這個名字將是我們通過 Python 代碼調用到這個對象的變數名,所以請盡量取一個有意義的名稱。
設計完成你的界面後,點擊保存,將會生成得到xxx.ui文件,這個文件可以通過cmd打開ui文件所在的路徑,然後通過pyuic4 xx.ui > xx.py 可以得到xx.py文件:
生成的py文件
2、編寫代碼
Qt 代碼是面向對象的,並且簡單易學。所有我們添加的組件都是一個對象,並且都擁有自己的方法比如toPlainText()(用來讀取輸入框中的值)。這讓它使用起來非常方便。
在你編寫代碼之前,你必須要使用一些函數來進行配置。可以通過官方的常式(以及網上的一些教程)中總結出了這一小段代碼來進行配置。
這些代碼非常有用,每當你想要創建一個新的 PyQt 項目的時候,就在這段代碼的基礎上添加你自己的代碼吧。
這段代碼如下:
其中需要注意的是:
你需要在這裡填入你先前創建的文件的地址,即就是之前生成的ui文件。這個文件將會被內置的函數載入:
再看下這段代碼:
這段主程序創建了一個新的 Qt Gui 應用。,每個 QT 應用都可以通過命令行進行配置,所以必須傳入sys.argv 參數。不過現在我們用不到這個。最後,我們創建了一個MyApp類,這個類繼承於 Qt 庫並且調用了父類的初始化函數:
你不一定非得要了解這些代碼的細節。你只需要在它的基礎上繼續開發就好了。
但是最好不需要這樣導入ui文件為前提下進行開發,而是直接生成py文件基礎上進行開發,因為你後續還需要生成exe文件,至於怎樣實現你的功能,這部分代碼可以看看自己的需求了,怎麼寫就怎麼寫了:
以上為部分代碼,只提供為參考
這段代碼有什麼用?還記得我們把按鈕命名為了calc_tax_button 嗎?(這是這個按鈕對象的名字,不是按鈕上顯示的提示字元串。)clicked 是一個內置的函數,當有按鈕被點擊的時候它會被自動調用(很神奇吧)。所有的 QT 組件都有特定的函數,你可以通過 Google 來查看詳細。這段代碼的最後部分是connect(self.CalculateTax)。這意味著這個按鈕會被鏈接到一個叫做self.CalculateTax 的函數,這樣以後每當用戶按下這個按鈕的時候,這段代碼都會被調用。
下面介紹一些獲取控制項的值和給控制項賦默認值的方法:
mainwindow.lineEdit.setText((u"zg 額外abc")) #給輸入框賦值
mainwindow.textEdit.setPlainText("") #給texedit賦值
mainwindow.comboBox.setCurrentIndex(2) #給下拉框賦值
mainwindow.checkBox.setChecked(1) #給複選框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 獲取複選框checkbox的值
好了,關於pyqt這塊的,先寫到這裡,我也是剛剛利用這個春節的時間來琢磨完成的,不過還是需要再深入學習。
TAG:片白科技 |