【python版QT學習】pyQT5上位機實戰(zhàn)筆記
配置相關
designer.exe
拖拉控件實現(xiàn)UI界面的工具,設計完成保存后是.ui文件
Program參數(shù):D:\Python\Python38-32\Scripts\designer.exe
Working directory參數(shù):$FileDir$
pyuic5
將界面.ui 文件轉換成.py文件
Program參數(shù):D:\Python\Python38-32\Scripts\pyuic5.exe
Argument參數(shù):$FileName$ -o $FileNameWithoutExtension$.py
Working directory參數(shù):$FileDir$
pyrcc5
將資源(圖片).qrc 文件轉換成.py文件
Program參數(shù):D:\Python\Python38-32\Scripts\pyrcc5.exe
Argument參數(shù):$FileName$ -o $FileNameWithoutExtension$.py
Working directory參數(shù):$FileDir$
from…import * 語句與 import 區(qū)別
import 模塊:導入一個模塊;注:相當于導入的是一個文件夾,是個相對路徑;使用:模塊.函數(shù)
from…import:導入了一個模塊中的一個函數(shù);注:相當于導入的是一個文件夾中的文件,是個絕對路徑;使用:函數(shù)
from a import A:導入a.py模塊中的A函數(shù)
.app.exec_()
程序一直循環(huán)運行直到主窗口被關閉終止進程
作用是運行主循環(huán),必須調用此函數(shù)才能開始事件處理,調用該方法進入程序的主循環(huán)直到調用exit()結束
主事件循環(huán)從窗口系統(tǒng)接收事件,并將其分派給應用程序小部件
如果沒有該方法,那么在運行的時候還沒有進入程序的主循環(huán)就直接結束了,所以運行的時候窗口會閃退
在退出時會返回狀態(tài)代碼
不用sys.exit(app.exec_()),只使用app.exec_(),程序也可以正常運行,但是關閉窗口后進程卻不會退出。
pyqt5借助QtDesigner設計圖形界面的思路
利用QtDesignert軟件設計界面,并保存,然后通過pyuic5程序將ui文件轉換為py文件,最后編寫一個main.py文件,運行py文件并顯示。
QT
至少要安裝Py-Qt5和pyqt5-tools
QTDesigner
預覽快捷鍵 ctrl+r
初次啟動會彈出這個“New Form”窗口,一般來說選擇“Main Window”然后點擊“Create”就可以了。
Qt Designer已經(jīng)在Python3.5版本從PyQt5轉移到了tools,因此我們還需要安裝pyqt5-tools
子線程不能調用主線程的QtGui類
QStringListModel介紹
我們這里使用了一個QListView來和 QStringListModel進行連接,這樣 QStringListModel的內容就會在QListView中顯示出來,任何對 QStringListModel的修改都會顯示在QListView中。這樣我們就可以達到數(shù)據(jù)存儲和顯示的分離,我們可以專注我們的數(shù)據(jù)部分( QStringListModel,只要我們定義好接口),顯示的部分就由QListView去負責,這就是QT的MVC(Model-View-Controller)機制,在MFC里也就是document和view。
界面修改
在主線程之外的線程更改界面
獲取一個類實例的方法
在這個類中定義靜態(tài)方法,返回其實例
直接在要使用的類中傳入類的實例
python中的類
對象是類的實例
加了self的變量或者方法,只有實例才能調用
調用類的方法:C.fun()
調用類的實例的方法:c().fun()
一般類大小,實例小寫(首字母)。比如類叫DataParse,那么實例一般叫dataParse。
普通繼承方式和super繼承方式單次繼承的話沒什么大區(qū)別。【多次繼承super優(yōu)勢比較明顯】
類中的下劃線
單下劃線、雙下劃線、頭尾雙下劃線說明:foo: 定義的是特殊方法,一般是系統(tǒng)定義名字 ,類似 init() 之類的。
_foo: 以單下劃線開頭的表示的是 protected 類型的變量,即保護類型只能允許其本身與子類進行訪問,不能用于 from module import *
__foo: 雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個類本身進行訪問了。
HTTP
403 - Forbidden
404 - Not Found
500 - Internal Server Error
502 - Bad Gateway
503 - Service Unavailable
exec_和show區(qū)別
若使用exec_()的話,那么顯示出來的注冊界面就是模態(tài)的,意思就是當前只能對該注冊界面進行操作,只有關閉了該界面才能對其他界面進行操作;若使用show()的話,那注冊界面就是非模態(tài)的,則在顯示了注冊界面后,還能同時對登錄界面進行操作(QDialog有exec_()方法,而QWidget沒有)。
槽函數(shù)如果帶參數(shù)
槽函數(shù)帶參數(shù),需要用lambda表達式進行處理
eg:self.ui.checkBoxRadarLeftFront.stateChanged.connect(lambda: self.playRadarPos(self.ui.checkBoxRadarLeftFront))
pyqt5
. setWindowTitle()方法可以設置窗口標題
setAlignment(Qt.AlignCenter)可以讓QLabel控件在窗口中居中顯示【更方便】
居中對齊還有:self.h_layout.addStretch(1)
事件處理
常用的包括窗口關閉事件處理、鼠標事件處理以及鍵盤事件處理
記得最后加上 accept 或者 ignore
ignoret()其實功能上就相當于pass
關于休眠
中斷不能休眠
線程可以休眠
關于None和False的一點對比
None、空列表[]、空字典{}、空元組()、0等一系列代表空和無的對象會被轉換成False
但是None和[]不是一回事?。?!
frames = [] if not frames: print("000") else: print("111") if frames == None: print("222") else: print("333")
1
2
3
4
5
6
7
8
9
10
11
12
問題記錄
pyqtSignal的參數(shù)應該是list
并行視頻顯示,提示'NoneType' object has no attribute 'width'解決辦法
incr拋出幾個信號量由下面的線程決定
圖片資源
播放卡,注意是多少時間放一次
控件不能拉伸?
布局的緣故?
pycharm 報錯Try to run this command from the system terminal. Make sure that you use the correct version of 'pip' installed for your Python interpreter located at 'D:\Python\Python38-32\python.exe'.(參考1 或者 參考2)
打開cmd命令行,或者PowerShell終端
進入python.exe所在文件夾(如果設置了PATH,可以在任意目錄下操作)
設置源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
更新pip:python -m pip install --upgrade pip
下載某個包:pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
或者python.exe -m pip install xxx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
AttributeError: module ‘serial’ has no attribute 'Serial’解決辦法
類實例作為“某個函數(shù)”的形式參數(shù)
在這個“某個函數(shù)”改變類實例的成員,實際參數(shù)也是會改變的!
class ServerFileNode: def __init__(self): self.radar = 1 class yFunction: def __init__(self, serverFileNode): self.serverFileNode = serverFileNode self.serverFileNode.radar = self.serverFileNode.radar + 1 serverFileNode = ServerFileNode() yFunction(serverFileNode) print(serverFileNode.radar)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
pyqt5-對文本樣式進行操作
參考
環(huán)境配置,快速上手HelloWorld
pycharm+PyQt5+python最新開發(fā)環(huán)境配置,踩坑過程詳解
用Python寫個上位機學習系列之第一個界面的設計 - pyqt5、pycharm、QtDesigner
pycharm配置
PyCharm安裝配置Qt Designer+PyUIC教程
PyQt5 圖形界面-用Qt Designer來設計UI界面,并轉化為python代碼運行 (詳細)
用Python寫個上位機學習系列之第一個界面的設計 - 參考這里面的main.py程序
PyQt5(designer)入門教程
PyQt5(designer)入門教程2020
PyQt5教程
PyCharm+QTDesigner+PyUIC使用教程 - 非mainwindow的按鈕點擊
程序中的一些函數(shù)記錄
python3 基礎
言簡意賅python系列—if not x: 和 if x is not None: 和 if not x is None: 的區(qū)別
Python3 基本數(shù)據(jù)類型
python集合增加數(shù)據(jù)的操作方法
Python 內置函數(shù)
Python3 print 函數(shù)用法總結
Python set() 函數(shù)
Python time sleep()方法
json.dumps()和json.loads()
Python3 find()方法
Python find()方法
Python lambda介紹
Python format 格式化函數(shù)
給大家?guī)硪黄猵ython with as的用法
python使用with as 讀寫文件
get函數(shù)和get_nowait函數(shù)
python的for in if 列表推導式用法
pyhton (for in if)用法
Python中關于列表推導式(與循環(huán)和條件判斷結合時)常會出現(xiàn)的問題
python中self
python中的面向對象
Python進階-----靜態(tài)方法(@staticmethod)
python中的self - 簡明版
一篇文章讓你徹底搞清楚Python中self的含義
python中的繼承
關于Python中的類普通繼承與super函數(shù)繼承
Python 子類繼承父類構造函數(shù)說明 - 菜鳥教程
Python學習筆記(4)Python中super的用法
python init()構造器中的super()使用用法
【Python】python 普通繼承方式和super繼承方式
菜鳥教程python教程super
python中網(wǎng)絡請求
Python使用requests發(fā)送post請求
urllib.request詳細介紹
HTTP 返回狀態(tài)碼
ImportError most likely due to a circular import 解決辦法
python編寫代碼circular import問題
解決循環(huán)import的問題
python 循環(huán)依賴問題
ImportError: cannot import name ‘db‘ from partially initialized module ‘a(chǎn)pp‘ (most likely due to a c
pyqt5界面相關
PyQt5高清屏幕自適應設置 QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
PyQt5中sys.argv和sys.exit(app.exec_())
PyQt中主函數(shù)app=QApplication(sys.argv) sys.exit(app.exec_())的作用
PyQt5系列教程(78):QSS入門3
PyQt(Python+Qt)學習隨筆:模式窗口的windowModality屬性與modal屬性
Qt模態(tài)界面設置setWindowModality禁止其他界面響應
PyQt5布局管理之QGridLayout - setLayout - addWidget
【Python】【PyQt5】addwidget的參數(shù)設置
Python基礎之PyQt5關閉界面 - self.close
pyqt5-實時刷新頁面(QApplication.processEvents())
Pyqt QApplication.processEvents() 防止頁面鎖死
QT窗體大小——setGeometry 和 resize區(qū)別
PyQt5布局管理之QGridLayout
QLineEdit使用詳解
QTextEdit 實現(xiàn) QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函數(shù)
PyQt(Python+Qt)學習隨筆:gridLayout的layoutRowMinimumHeight和layoutColumnMinimumWidth屬性
PyQt5基本控件詳解之QMessageBox
QT實驗分析教程 Qt中的坐標系統(tǒng) — geometry,frameGeometry()
qlabel 詳解 - clear
Qt 之 QLabel - clear
鼠標相關
窗口跟隨鼠標移動
PyQt5編程:鼠標事件1
PyQt5編程-鼠標事件2
QT類之事件mousePressEvent以及mouseMoveEvent
多線程
Python3 多線程 - threading.Thread; Queue
Python中如何清空Queue?
Python隊列的三種隊列實現(xiàn)方法
Python threading中event的使用
python之event事件
Python多線程-Event(事件對象)
Python threading中l(wèi)ock的使用
字節(jié)串
Python bytes類型及用法
啟動界面
PyQt5編程(5):啟動界面QSplashScreen
Qt學習16——程序啟動畫面QSplashScreen
勤奮的小青蛙 - PyQt SplashScreen示例,PyQt啟動界面演示
model/view介紹入門
QStringListModel的簡單使用
Qt QStandardItemModel用法(超級詳細)
pyqt QStandardItemModel()清空數(shù)據(jù)
WindowFlags
PyQt中WindowFlags使用詳解
無邊框窗口FramelessWindowHint實現(xiàn)移動和縮放功能
關于字體
Qt 之字體設置(QFont)詳解
關于右鍵菜單
PyQt5 右鍵菜單Context Menu 彈出的方法
PyQt5 之右鍵菜單
PyQt5 系統(tǒng)化學習: 表格與樹
PyQt5中彈出框QDialog的show()和exec()的區(qū)別
PyQt5 右鍵菜單Context Menu 彈出的方法
關于顯示圖片
PyQt5 QPixmap簡介
QT中QImage類
關于繪圖
【Python】 【繪圖】plt.figure()的使用
matplotlib(二):畫布(figure)與坐標軸(axes)的布局
matplotlib畫圖系列之設置柵格,axes脊柱(坐標軸),背景顏色
matplotlib命令與格式:tick_params參數(shù)刻度線樣式設置
表單控件 QTableWidget
PyQt5 QTableWidget(表單控件)自適應窗口大小、欄位大小調整及布局
Pyqt5之QTableWidget隱藏表頭和設置行列名稱
QLabel
Qt學習:QLabel的用法及其程序示例
EventFilter
PyQt學習隨筆:應用中通過installEventFilter安裝重寫的eventFilter捕獲應用事件的方法
PyQt里的EventFilter
pyqt5 事件event 過濾 installEventFilter eventFilter QEvent.MetaCall
opencv
學習opencv之cvtColor
cv2.imread()和cv2.cvtColor() 的使用
CNN編程中的問題——img.shape[0]、[1]、[2]到底代表什么
機器學習進階-圖像基本操作-數(shù)值計算 1.cv2.add(將圖片進行加和) 2.cv2.resize(圖片的維度變換) 3.cv2.addWeighted(將圖片按照公式進行重疊操作)
彩色圖像技術重要函數(shù)cv2.addWeighted()
Python-OpenCV 圖像疊加or圖像混合加權(cv2.addWeighted)
介紹OpenCV的MAT和QT的Qimage
#最全面# Python 中如何將 Pyqt5 下的 QImage 對象轉換成 PIL image 或 opencv MAT (numpy ndarray) 對象
Python圖像庫PIL的類Image及其方法介紹
利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng)
Python cv2.circle詳細介紹
python opencv3 向圖像里寫字
Pyhon利用OpenCV在圖片上顯示文字及保存
Python 用 OpenCV 畫直線 (3)
QTableView
QTableView根據(jù)內容自動調整大小(resizeColumnToContents解決不了的)
QTableView填充表格(函數(shù):setSectionResizeMode()和setStretchLastSection())
QT表格的寬度自適應調整方法void setStretchLastSection ( bool stretch );
QT表格的寬度自適應調整方法
時間
python之time和datetime的常用方法
pyqtSignal
關于PyQt5中自定義信號的幾點理解 - 傳入的參數(shù)
《快速掌握PyQt5》第二章 信號與槽——裁判鳴槍與選手開跑
HTTP
HTTP: Request中的post和get區(qū)別
知識點講解二:關于requests里的timeout()
requests.post 小坑: 默認無超時,會阻塞
Python Qt 網(wǎng)絡
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。