python 版qt入門級使用說明python
我使用的是python3.5安裝PyQt5:app
pip3 install PyQt5
能夠用以下代碼測試環境是否安裝成功,運行成功會彈出一個窗口:函數
from PyQt5 import QtWidgets, QtGui import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget(); window.show() sys.exit(app.exec_())
若是要像C++那樣使用UI該怎麼辦呢?仍是能夠使用Qt Creater測試
打開Qt Creator,新建一個工程,QT -> Qt設計師界面類 -> Widget -> 保存字體
默認保存就好,不用管保存爲form.cpp哪裏,由於咱們只須要form.ui這個文件ui
關於建立界面仍是和直接在Qt中使用同樣。this
好比個人例子,我作一個簡易界面,包含一個按鈕,兩個QLabel用於顯示圖像:編輯信號和槽,選擇信號槽編輯,選中button添加監聽clicked事件,槽函數咱們自定義爲test()。(在pushButton上點擊而後往外拖動便獲得一個信號槽)spa
而後保存,接下來把form.ui文件編譯爲form.py文件設計
到保存form.ui的目錄,shift+右鍵,在當前路徑打開控制檯,執行以下命令:code
pyuic5 form.ui -o form.py
若是找不到pyuic5可執行程序,檢查一下環境變量是否正確。(pyuic5是安裝pyqt是安裝的)
至此界面已經生成,後面就是使用form.py這個界面了
能夠看看form.py的內容:
1 # -*- coding: utf-8 -*- 2 3 # Form implementation generated from reading ui file 'form.ui' 4 # 5 # Created by: PyQt5 UI code generator 5.10.1 6 # 7 # WARNING! All changes made in this file will be lost! 8 9 from PyQt5 import QtCore, QtGui, QtWidgets 10 11 class Ui_Form(object): 12 def setupUi(self, Form): 13 Form.setObjectName("Form") 14 Form.resize(1420, 780) 15 self.pushButton = QtWidgets.QPushButton(Form) 16 self.pushButton.setGeometry(QtCore.QRect(0, 710, 141, 41)) 17 font = QtGui.QFont() 18 font.setPointSize(12) 19 self.pushButton.setFont(font) 20 self.pushButton.setObjectName("pushButton") 21 self.label = QtWidgets.QLabel(Form) 22 self.label.setGeometry(QtCore.QRect(0, 0, 700, 700)) 23 font = QtGui.QFont() 24 font.setPointSize(20) 25 self.label.setFont(font) 26 self.label.setStyleSheet("QLabel{\n" 27 " border-width: 1px;\n" 28 " border-style: solid;\n" 29 " border-color: rgb(255, 0, 0);\n" 30 "}") 31 self.label.setObjectName("label") 32 self.label_2 = QtWidgets.QLabel(Form) 33 self.label_2.setGeometry(QtCore.QRect(710, 0, 700, 700)) 34 font = QtGui.QFont() 35 font.setPointSize(20) 36 self.label_2.setFont(font) 37 self.label_2.setStyleSheet("QLabel{\n" 38 " border-width: 1px;\n" 39 " border-style: solid;\n" 40 " border-color: rgb(0, 0, 255);\n" 41 "}") 42 self.label_2.setObjectName("label_2") 43 44 self.retranslateUi(Form) 45 self.pushButton.clicked.connect(Form.test) 46 QtCore.QMetaObject.connectSlotsByName(Form) 47 48 def retranslateUi(self, Form): 49 _translate = QtCore.QCoreApplication.translate 50 Form.setWindowTitle(_translate("Form", "Form")) 51 self.pushButton.setText(_translate("Form", "選擇文件夾")) 52 self.label.setText(_translate("Form", "原圖")) 53 self.label.setAlignment(QtCore.Qt.AlignCenter) # 讓字體居中,本身加的 54 self.label_2.setText(_translate("Form", "結果圖")) 55 self.label_2.setAlignment(QtCore.Qt.AlignCenter) # 讓字體居中
接下來使用Qt Creater生成的這個界面
打開這個form.py這個文件,能夠看到生成了Ui_Form這個類,有一些咱們添加的控件。咱們只須要導入類,作初始化,而後編寫自定義的槽函數就能夠了。
1 #coding=utf-8 2 from PyQt5.QtWidgets import * 3 from PyQt5 import QtWidgets,QtGui 4 import os 5 6 from form import Ui_Form #導入咱們的界面文件 7 8 class LoginDlg(QDialog,Ui_Form): 9 def __init__(self, parent=None): 10 super(LoginDlg, self).__init__(parent) 11 self.setupUi(self) 12 13 self.setWindowTitle("肝臟分割演示") 14 # self.resize(1800, 1000) 15 16 #獲取選擇文件夾路徑 17 def getPath(self): 18 seriesPath = QFileDialog.getExistingDirectory(self,"選取文件夾","./") 19 # print(seriesPath) 20 return seriesPath 21 22 def test(self): # 這個test函數就是定義UI時跟pushButton鏈接的那個函數,這裏實現功能 23 seriesPath=self.getPath() 24 for _,dirs,files in os.walk(seriesPath): 25 for f in files: 26 if os.path.splitext(f)[1]=='.bmp': 27 picPath=os.path.join(_,f) 28 print(picPath) 29 pic=QtGui.QPixmap(picPath) 30 # pic=pic.scaled(850,850) # resize 圖像大小進行顯示 31 self.label.setPixmap(pic) 32 self.label_2.setPixmap(pic) 33 # self.origin.update() 34 self.label.repaint() 35 self.label_2.repaint() 36 # self.repaint() 37 time.sleep(1) # 時間延遲1s 38 39 if __name__=="__main__": 40 import sys 41 import time 42 43 app = QtWidgets.QApplication(sys.argv) 44 dlg=LoginDlg() 45 dlg.show() 46 sys.exit(app.exec_())
運行結果: