我做Python窗口界面編程時,經常使用PyQt進行設計。這里簡單敘述一下使用PyQt5制作一個簡單的圖形界面的流程
PyQt的簡介以及開發環境的搭建在此不多贅述。
1. 打開Qt Designer,新建一個Dialog Without Buttons
2. 從左側的Widget Box拖入一個Label,一個Text和一個Button
3. 雙擊控件可以改變其上的文本
4. 保存文件,命名為test.ui
5. 使用pyuic5將.ui文件轉換為.py文件。方法:打開命令提示符,進入test.ui所在文件目錄,輸入命令pyuic5 test.ui –o test.py並執行(如果使用的是pyqt4的話,前面輸入的就應當是pyuic4),執行完成后會看到一個python腳本文件test.py
6. 生成完整的GUI程序。打開生成的test.py文件,此時如果直接運行是不能生成GUI界面的,需要添加一些代碼才能運行。首先在文件開頭添加“import sys”。然后在文件末尾添加主函數:
“
if __name__=='__main__':
app=QtWidgets.QApplication(sys.argv)
Form=QtWidgets.QWidget()
ui=Ui_Dialog()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
”
我在做PyQt生成第一個界面的時候,借鑒了PyQt4的GUI添加方法http://jingyan.baidu.com/article/a3761b2ba2b8581576f9aa98.html,但是在測試時發現PyQt4的要寫的代碼與PyQt5在一處有所不同。上面百度經驗的網站上寫的需要添加的代碼有一行是“Form=QtGui.QWidget()”。但據我測試,使用pyqt5的話那一行代碼應該改為“Form=QtWidgets.QWidget()”。
添加完成后再運行就可以看到GUI界面了,按照之前所寫的,GUI界面上應該有一Label,一個Line Edit和一個Button。
這樣就完成了一個簡單的Python GUI程序了。
7. 添加事件。添加的內容是按下按鈕后,Label上的文本變成Lie Edit里面輸入的內容。首先在Ui_Dialog類的SetupUi方法中添加代碼“self.pushButton.clicked.connect(self.A)”,意思是按下按鈕后執行Ui_Dialog類的方法“A”。然后在Ui_Dialog中添加方法“A”:
“
def A(self,Dialog):
try:
EditText=self.lineEdit.text()
_translate = QtCore.QCoreApplication.translate
self.label.setText(_translate("Dialog", EditText))
except:
print(sys.exc_info())
”
運行程序的效果是:在Line Edit上輸入一些內容,按下按鈕,Label上的文本就會變為LineEdit上輸入的內容。
另外,編寫Python的GUI代碼時,最好每個函數都加入try-except異常處理。因為如果GUI程序拋出未經處理的異常(比如NameError),往往並不會在控制台上顯示“Traceback…File X,Line X …XXXError…”的錯誤信息,而是圖形界面卡死彈出Pythonw.exe已停止工作的消息,這樣非常不利於調試。
8. 最后,我在學PyQt時經常上的網站:
http://zetcode.com/gui/pyqt5/
這個網站雖然是全英文的,但是內容還是很詳細的
另外,PyQt5的安裝包里面有自帶教程,里面詳細介紹了很多的控件類及其使用方法,路徑為<</span>安裝包路徑>\doc\html
http://blog.sina.com.cn/s/blog_15d207b300102xi5t.html