PyQt5學習筆記,帶例子源碼

一、很程序員,都喜歡開發windows桌面應用系統,基於python3開發,效率高

二、PyQt5開發的桌面應用系統是可以跨平臺的,可以在Mac上、Window上、Linux桌面系統上運行,以下爲學習筆記及總級

三、源碼下載

      https://download.csdn.net/download/hekf2010/11459971

1、QDateTimeEdit 日期輸入框
	setCalendarPopup  彈出日期選擇框
	setDisplayFormat("yyyy-MM-dd HH:mm:ss") 設置展示格式
2、QCalendarWidget 日曆選擇組件,直接是彈框形式
	selectedDate 獲取選擇的日期
3、QDockWidget 停靠控件
	setFloating(True) # 設置停靠控件懸浮狀態
4、QScrollBar 滾動條控件
	sliderMoved 滾動事件觸發
5、QStackedWidget 堆棧窗口控件 ,使用看QStackedWidget.py
6、QMdiArea 容納多文檔的窗口 子控件QMdiSubWindow,使用查詢 ScrollBar.py
7、QTabWidget 選項卡控件
	addTab 添加tab頁
8、QCheckBox 按鈕控件,三種選中狀態 0未選中、 1半選中、2選中
	stateChanged 選中事件方法
	setCheckState(Qt.PartiallyChecked) 設置半選中方法
9、QComboBox 下拉列表控件
	currentIndexChanged 選擇變化事件
10、QLineEdit 輸入框控件 
	(1)EchoMode (回顯模式)a、Normal 通用模式 b、NoEcho 不回顯 c、Password c、   	PasswordEchoOnEdit 編輯時顯示,焦點移走,變成密碼模式
	(2)檢驗器QIntValidator、QDoubleValidator、QRegExpValidator(QRegExp)
	(3)setValidator 設置檢驗器
11、QAbstractButton按鈕基類控件,
	子類有 QPushButton、QToolButton、QRadioButton、	QCheckBox
12、QSpinBox 計數器控件
	valueChanged 變化事件
13、QSplider 滑塊控件
	valueChanged 變化事件
14、QTextEdit 編輯多行文件控件
15、(1)窗口的setWindowIcon方法用於設置窗口的圖標,只有在Windows中可用
	(2)QApplication中的setWindowIcon方法用於設置主窗口的圖標和應用程序圖標,但調用了窗口的setWindowIcon方法
	(3)QApplication中的setWindowIcon方法只能用於設置應用程序圖標
16、QColorDialog顏色對話框,要與調色板搭配使用,如下
    color = QColorDialog.getColor()
    p = QPalette()
    p.setColor(QPalette.WindowText,color)
    self.colorLabel.setPalette(p)
16、QDialog 對話框控件 子類有
	QMessageBox、QColorDialog、QFileDialog、QFileDialog、QFontDialog、QInputDialog
	例如:
	QMessageBox.information(self, '消息', '消息對話框', QMessageBox.Yes | QMessageBox.No, 	QMessageBox.Yes)
	QMessageBox.warning(self, '警告', '這是一個消息對話框', QMessageBox.Yes | 	QMessageBox.No, QMessageBox.Yes)
17、QApplication.clipboard() 剪貼板
18、讓控件支持拖拽功能 使用請看 DrapDrop.py例子
	A控件.setDragEnabled(True)
	B控件.setAcceppDrops(True)
	B需要兩個事件
	1、dragEnterEvent 將A拖到B解發
	2、dropEvent 在B的區域放下A時觸發
19、QPainter 繪圖API,常與QBrush組件配合使用
	begin(self)
	end()
19、QGridLayout 柵格佈局
	addWidget(titleLabel, x座標, y座標)
20、QFormLayout 表格佈局
	addRow(控件1, 控件2,...)
21、QSplitter 拖動控件之間的邊界
	將其它控件,addWidget到QSplitter 這時裏面,這樣控件就可以拖拽了
22、QHBoxLayout水平佈局、QVBoxLayout垂直佈局
	addStretch主要用在,例如:將【確定】【取消】始終在右下角位置
	addStretch(0) 所佔空間爲0
	addStretch(1) 所佔空件爲最大,將左右兩邊的控件往兩邊擠
	setSpacing(20)設置空隔位置大小
23、QStatusBar狀態欄控件
	QMainWindow.addMenu 添加菜單
	QMainWindow.addToolBar 添加工具欄
	QMainWindow.setStatusBar(QStatusBar()) 設置狀態欄
	QMainWindow.setWindowOpacity(0.2)設置窗口透明度
	Triggered 點擊事件觸發
24、QThread 實現多線程方法是繼承QThread類,重寫run方法,開始線程調用start()方法
	配套常與QLCDNumber計數據使用
25、QTimer 定時器
	timeout 綁定事件觸發
	start(5000) 間隔5秒觸發timeout事件
	stop()
26、QPageSetupDialog 打印機設置
	printer = QPrinter()
	(1)printDialog = QPageSetupDialog(printer , self) 打印機設置
	printDialog.exec_() 彈出打印機設置
	(2)printDialog = QPrintDialog(printer, self)  顯示打印對話框
27、信事與槽
	(1)信號與槽自動連接
	a、指定 okButton.setObjectName('okButton')
	b、QtCore.QMetaObject.connectSlotsByName(self)  # 指定信號槽按名字來指定
	c、槽函數格式爲def on_okButton_clicked
	(2)自定義信息號
		自定義信號類,繼承QObject(或其它類型),定義一個信號,如下
			class MyTypeSignal(QObject):
		# 定義一個信號
		sendmsg = pyqtSignal(object)
		# 發送3個參數的信號
		sendmsg1 = pyqtSignal(str, int, int)
		def run(self):
			self.sendmsg.emit('Hello PyQt5')
		def run1(self):
			self.sendmsg1.emit('Hello', 3, 4)
		自定槽類繼承QObject,以及方法
		class MySlot(QObject):
		def get(self, msg):
			print('信息:' + msg)
		def get1(self, msg, a, b):
			print('信息:' + msg)
			print(a + b)
	   使用自定義
		send = MyTypeSignal()
		slot = MySlot()
		send.sendmsg.connect(slot.get)
		send.sendmsg1.connect(slot.get1)
		send.run()
		send.run1()
	
	(3)使用Lambda表達式爲槽函數傳遞參數
		fun = lambda : print('hello world')
		fun()
		func1 = lambda x,y:print(x,y)
		func1()
		例如:
		button1.clicked.connect(lambda: self.onButtonClick(10, 20))
	(4)聲明一個重載版本的信號
		signal6 = pyqtSignal([int, str], [str])
		# 1、聲明一個重載版本的信號,也就是槽函數所參數可以是int和str兩個類型,也可以只有一個str類型的參數
		# 2、在綁定草信號,與發送信息時,都要指定參數類型
		signal6[int, str].connect(self.signalCall6)
		signal6[str].connect(self.signalCall6Overload)
					signal6[int, str].emit(100, "myt test")
					signal6[str].emit("test")
	(5)信號槽N對N連接與斷開連接
		signal2.connect(self.signal1) # 注意,信號2綁在了信號1上面,由信號1去    			觸發槽函數
28、QTreeWidget 樹控件 使用查看 BasicTreeWidget.py
	setColumnCount(2) 爲樹控件指定列數
	QTreeWidgetItem 子節點項
	setCheckState(0, Qt.Checked)  # 子節點添加複選框
29、QTableWidget 表格控件,繼承至QTableView
	setHorizontalHeaderLabels(['姓名', '性別', '體重'])
	sortItems(columnIndex, orderType) 第幾列排序 
	orderType爲Qt.DescendingOrder、	Qt.DescendingOrder
	QTableWidgetItem 表格控件單元格控件
	tableWidget.setItem(0, 1, newItem)
30、QListWidget列表,是QListView的子類,擴展了很多方法
	addItem
	itemClicked 事件觸發
31、QWebEngineView瀏覽器控件
	setHtml
	self.brower = QWebEngineView()
	self.brower.load(QUrl.fromLocalFile(url))
	self.brower.load(QUrl('https://www.jd.com'))
32、QSS樣式,和CSS很類似
	(1)代碼設置
		# 選擇器
		qssStyle = """
		QPushButton {
			background-color:red
		}
		"""
	控件.setStyleSheet(qssStyle)
	(2)加載QSS文件 使用查看LoadQSS.py
		class CommonHelper:
		@staticmethod
		def readQSS(style):
			with open(style, 'r') as f:
				return f.read()
		調用
		styleFile = './style.qss'
		qssStyle = CommonHelper.CommonHelper.readQSS(styleFile)
		控件.setStyleSheet(qssStyle)
33、實現繪圖應用 查看 Drawing.py
	1:如何繪圖
	在paintEvent方法中繪圖,通過調用update方法觸發painEvent的調用
	2:在哪繪圖
	在QPixmap這裏面繪圖
	3:如何通過移動鼠標進行繪圖
	(1)鼠標按下 mousePressEvent
	(2)鼠標移動 mouseMoveEvent
	(3)鼠標擡起 mouseReleaseEvent
34、QImage  縮放圖片 QImage.scaled
	filename = '1.jpg'
	img = QImage(filename)
	result=img.scaled(label1.width(),label1.height(),Qt.IgnoreAspectRatio,Qt.SmoothTransformation)  
	# 讓圖片顯示比較平滑
	label1.setPixmap(QPixmap.fromImage(result))
34、QSqlDatabase 數據庫組件
	db = QSqlDatabase.addDatabase('QSQLITE')
	# 指定SQLite數據的文件名
	db.setDatabaseName('./db/database.db')
	model = QSqlTableModel()
	model.setTable('people')
	model.setEditStrategy(QSqlTableModel.OnFieldChange)
	model.select()
	model.setHeaderData(0, Qt.Horizontal, 'ID')
	model.setHeaderData(1, Qt.Horizontal, '姓名')
	model.setHeaderData(2, Qt.Horizontal, '地址')
	view = QTableView()
	view.setModel(model)
    

 

 

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