zl程序教程

您现在的位置是:首页 >  工具

当前栏目

【pyqt5学习】——QToolTip,QLabel控件,伙伴关系

学习 控件 PyQT5
2023-09-11 14:21:45 时间

目录

0、学习资源

1、给控件设置提示信息——QToolTip

2、QLabel控件(显示图像、设置超链接、信号绑定)

3、QLabel伙伴关系

1)代码

 2)效果

3)知识点addWidget


0、学习资源

PyQt5教程,来自网易云课堂_哔哩哔哩_bilibilihttps://study.163.com/pycharm+pyqt5视频来自网易云课堂https://www.bilibili.com/video/BV154411n79k

1、给控件设置提示信息——QToolTip

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/17 21:02
# @Author  : @linlianqin
# @Site    : 
# @File    : 给控件添加信息提示.py
# @Software: PyCharm
# @description:

from PyQt5.QtWidgets import QMainWindow,QToolTip,QPushButton,QHBoxLayout,QWidget,QApplication
from PyQt5.QtGui import QFont

class messageTipLearn(QMainWindow):
	def __init__(self):
		super(messageTipLearn,self).__init__()

		# 设置一个按钮
		self.button = QPushButton()
		self.button.setText("信息提示")

		# 设置一个横向布局
		self.hLayout = QHBoxLayout()

		# 设置一个窗口
		self.widget = QWidget()

		# 将按钮放在布局中
		self.hLayout.addWidget(self.button)
		# 将布局放在窗口
		self.widget.setLayout(self.hLayout)
		# 将窗口添加到界面上
		self.setCentralWidget(self.widget)

		# 设置提示信息的格式
		QToolTip.setFont(QFont("SanSerif",12))
		# 设置提示内容
		self.button.setToolTip("这是一个按钮")
		# 设置提示信息显示的时长,5s
		self.button.setToolTipDuration(5000)



if __name__ == '__main__':
	import sys
	app = QApplication(sys.argv)
	win = messageTipLearn()
	win.resize(300,300)
	win.setWindowTitle("信息提示学习")
	win.show()
	sys.exit(app.exec_())

2、QLabel控件(显示图像、设置超链接、信号绑定)

QLabel控件有两个信号,前提都是label控件上面的内容为超链接文本

一个信号是划过label上面的链接时触发:linkhovered

一个信号是点击label上面的链接时触发:linkActivated

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/17 21:37
# @Author  : @linlianqin
# @Site    : 
# @File    : QLabelDemo.py
# @Software: PyCharm
# @description:

from PyQt5.QtWidgets import QMainWindow,QToolTip,QLabel,QVBoxLayout,QWidget,QApplication
from PyQt5.QtGui import QFont,QPixmap
from PyQt5.QtCore import Qt

class labelDemo(QWidget):
	def __init__(self):
		super(labelDemo, self).__init__()
		self.InitUi()

	def InitUi(self):
		# 创建四个label控件
		## label1标题栏,居中显示
		label1 = QLabel()
		label1.setText("这是一个label标签控件演示程序")
		label1.setAlignment(Qt.AlignCenter)
		## label2创建链接
		label2 = QLabel()
		label2.setText("<a href='#'>欢迎使用Python GUI Label 控件</a>")
		## label3显示图像
		label3 = QLabel()
		label3.resize(100,300)
		label3.setScaledContents(True)  # 设置图像自适应控件大小
		label3.setPixmap(QPixmap("./1.jpg"))

		## label4显示超链接
		label4 = QLabel()
		label4.setOpenExternalLinks(True)
		label4.setText("<a href='http:www.baidu.com'>进入百度搜索</a>")

		# 布局
		self.vlayout = QVBoxLayout()
		self.vlayout.addWidget(label1)
		self.vlayout.addWidget(label2)
		self.vlayout.addWidget(label3)
		self.vlayout.addWidget(label4)

		self.setLayout(self.vlayout)

		label2.linkHovered.connect(self.hoverLabelSlot)
		label4.linkActivated.connect(self.clickedLabelSlot)

	# 划过label上面链接触发
	def hoverLabelSlot(self):
		print("划过label控件触发的事件")

	# label上链接点击触发事件
	def clickedLabelSlot(self):
		print("点击label控件触发的事件")


if __name__ == '__main__':
	import sys
	app = QApplication(sys.argv)
	win = labelDemo()
	win.resize(300,300)
	win.setWindowTitle("label控件学习")
	win.show()
	sys.exit(app.exec_())



 

3、QLabel伙伴关系

伙伴关系其实就是通过一个控件来控制另一个控件,比如一个登陆界面,需要输入用户名和密码,通常我们需要用鼠标或者触摸屏来点击输入框后再进行输入,这样再输入用户名后又得进行鼠标或者触摸屏的操作,当输入框繁多的时候,这种操作就会显得非常的繁琐,而通过设置伙伴关系,通过键盘的组合键就可以实现定位到指定的输入框进行输入

Windows系统下通过Alt+指定字母键来实现。

具体可以参考文章:

PyQt5之设置控件之间的伙伴关系_Anony吧的博客-CSDN博客_pyqt5 伙伴关系PyQt5之设置控件之间的伙伴关系伙伴关系:设置两个控件之间的关联,通过一个控件控制另一个控件。1、首先选择在Widget Box中拖入一个Frame属性放在窗口中,再往窗口中添加Label、Line Edit属性,并且修改Label属性的显示值,在这里我采用容器布局管理,对整个Frame容器使用表单布局,效果图如下:2、向每个Label属性添加热键(&A)、(&B)、(&C),如下图:热键:又叫快捷键,通过操控键盘的特点键来快速完成指定的操作,代替了鼠标的繁琐移动。https://blog.csdn.net/qq_44880255/article/details/106365681

1)代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/20 16:10
# @Author  : @linlianqin
# @Site    : 
# @File    : QLabelBuddy伙伴关系.py
# @Software: PyCharm
# @description:

from PyQt5.QtWidgets import QDialog,QLabel,QLineEdit,QPushButton,QGridLayout,QApplication


class QLabelBuddy(QDialog):
	def __init__(self):
		super(QLabelBuddy, self).__init__()
		self.InitUI()

	# 初始化界面
	def InitUI(self):
		self.setWindowTitle("QLabel控件伙伴关系")
		# 创建label和lineEdit
		label1 = QLabel("用户名(&A):",self)
		lineEdit1 = QLineEdit(self)
		# 设置二者伙伴关系
		label1.setBuddy(lineEdit1)

		# 创建label和lineEdit
		label2 = QLabel("密码(&B):",self)
		lineEdit2 = QLineEdit(self)
		# 设置二者伙伴关系
		label2.setBuddy(lineEdit2)

		# 创建按钮
		btn1 = QPushButton("登录")
		btn2 = QPushButton("退出")


		# 创建栅格布局,将控件放在布局里面
		mainLayout = QGridLayout(self)
		mainLayout.addWidget(label1,0,0) # 将控件label1放置在第一行第一列
		mainLayout.addWidget(lineEdit1,0,1,1,2) # 将控件lineEdit控件放在第一行第二列,并且占一行两列的大小位置
		mainLayout.addWidget(label2,1,0) # 将控件label1放置在第一行第一列
		mainLayout.addWidget(lineEdit2,1,1,1,2) # 将控件lineEdit控件放在第一行第二列,并且占一行两列的大小位置
		mainLayout.addWidget(btn1,2,1) # 将控件label1放置在第一行第一列
		mainLayout.addWidget(btn2,2,2) # 将控件lineEdit控件放在第一行第二列,并且占一行两列的大小位置


if __name__ == '__main__':
	import sys
	app = QApplication(sys.argv)
	demoWin = QLabelBuddy()
	demoWin.show()
	sys.exit(app.exec_())

 2)效果

这里通过

Alt+A可以将光标定位在用户名的输入框中

Alt+B可以将光标定位在密码的输入框中 

其实可以理解为快捷键或热键

3)知识点addWidget

1、往栅格布局里面加控件

addWidget(需要添加的控件名,布局的第几行**索引从0开始**,第几列,大小占几行,占几列)

2、setBuddy——将两个控件设置伙伴关系