目录
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 QFontclass 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("这是一个按钮")# 设置提示信息显示的时长,5sself.button.setToolTipDuration(5000)if __name__ == '__main__':import sysapp = 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 Qtclass 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 sysapp = 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,QApplicationclass QLabelBuddy(QDialog):def __init__(self):super(QLabelBuddy, self).__init__()self.InitUI()# 初始化界面def InitUI(self):self.setWindowTitle("QLabel控件伙伴关系")# 创建label和lineEditlabel1 = QLabel("用户名(&A):",self)lineEdit1 = QLineEdit(self)# 设置二者伙伴关系label1.setBuddy(lineEdit1)# 创建label和lineEditlabel2 = 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 sysapp = QApplication(sys.argv)demoWin = QLabelBuddy()demoWin.show()sys.exit(app.exec_())
2)效果
这里通过
Alt+A可以将光标定位在用户名的输入框中
Alt+B可以将光标定位在密码的输入框中
其实可以理解为快捷键或热键
3)知识点addWidget
1、往栅格布局里面加控件
addWidget(需要添加的控件名,布局的第几行**索引从0开始**,第几列,大小占几行,占几列)
2、setBuddy——将两个控件设置伙伴关系