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)
    

 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值