PyQt5簡單例程及在PyCharm中設置PyQt5

本文介紹Python使用PyQt5進行界面程序編寫的一個簡單例程。

參考博客http://blog.csdn.net/u013401853/article/details/54581512,參考的博客寫的更爲詳細一些。

容易出現下面問題:

解決Pycharm無法導入包問題 Unresolved reference



  • 軟件環境準備

       PyQt5只有在Python3.5及其以上版本中才能使用,安裝方法在Python庫安裝這篇博客中有說明。此外,需要安裝Qt的開發環境,需要使用其中的工具--QtCreator或者Designer。PyQt5的主要作用就是使得Python調用使用QT設計的ui界面進行編程,如此這般就可將QT的界面設計便捷和Python強大的優點結合起來。

補充:(可選,但是建議配置,使用起來更方便)

       爲了方便在PyCharm中更方便的使用PyQt5,需要在PyCharm中配置PyQt5,包括Qt的Designer以及PyQt5自帶的pyuic5工具。

       配置過程見:

       PyQt5+python3+pycharm開發環境配置

  • Qt界面設計

       在Qt的界面開發開發中,設計界面可以使用Qt Creator或者Designer,本質是一樣的,本文中使用Designer。

        新建一個Main Window項目,保存爲testPyQt5.ui(參考博客中建立的是Widget項目)

       

      在界面上添加一個pushButton,名爲btn,添加一個testEdit,名爲textEdit

      


      通過上圖中的來爲pushButton添加一個槽函數btn_click(),該圖標就是信號和槽編輯器。

     進入信號槽編輯模式後,左鍵按住pushButton然後往外拖到一個地方鬆開,便會出現下圖中的樣子

   

 上圖中左邊爲名爲btn的pushButton的信號,選中clicked()信號,右邊即爲與該信號綁定的槽函數。

  由於該信號暫時並沒與任何槽函數相連接,所以右邊的槽函數框中是空白的。此時就需要自己新建一個槽函數了。點擊編輯,會彈出一個界面中,點擊槽對應的框下面的   ,會生成一個函數,名字修改爲btn_click()

        

   然後確認。在返回的界面中,在槽函數那一欄中選擇剛纔自定義的btn_click()函數

    

    確認並保存。然後將testPyQt5.ui文件放到自己的項目目錄下。

  • Qt的 ui文件轉化爲python文件

      PyQt5提供了將ui文件轉化爲python文件的工具--pyuic5,在python安裝目錄下的scripts文件夾下,記得將pyuic5所在的路徑添加到系統環境變量中。

     進入項目目錄下(前一步中已將testPyQt5.ui放到項目目錄下)

      輸入:

   pyuic5 testPyQt5.ui -o testPyQt5.py
      便會在當前目錄下生成名爲testPyQt5.py的文件。

      如果前面自PyCharm中配置了PyQt5,就可以直接郵件testPyQt5.ui,External Tools->PyUIC,就自動生成了.py文件。

  • 在Python中使用Qt設計的界面

       代碼如下:

  

from testPyQt5 import Ui_MainWindow  #導入uitestPyQt5.ui轉換爲uitestPyQt5.py中的類

from PyQt5 import QtWidgets
import sys

class Mywindow(QtWidgets.QMainWindow,Ui_MainWindow):  
#建立的是Main Window項目,故此處導入的是QMainWindow
#參考博客中建立的是Widget項目,因此哪裏導入的是QWidget
    def __init__(self):
        super(Mywindow, self).__init__()
        self.setupUi(self)

    def btn_click(self):     #定義槽函數btn_click(),也可以理解爲重載類Ui_MainWindow中的槽函數btn_click()
        self.textEdit.setText("hi,PyQt5~")

app = QtWidgets.QApplication(sys.argv)
window = Mywindow()
window.show()
sys.exit(app.exec_())

 效果如下圖:

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章