目录
0、学习资源
1、给控件设置提示信息——QToolTip
2、QLabel控件(显示图像、设置超链接、信号绑定)
3、QLabel伙伴关系
1)代码
2)效果
3)知识点addWidget
0、学习资源
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+指定字母键来实现。
具体可以参考文章:
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——将两个控件设置伙伴关系