PyQt5初級教程(一)

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_())

運行結果:

相關文章
相關標籤/搜索