最近更新时间:2023-03-12 09:58
1. Label:标签控件
1.1 简介
标签控件主要用于显示用户不能编辑的文本,标识窗体上的对象(例如:给文本框、列表框添加,描述信息等)。它对应PyQt5中的QLabel类,Label控件在本质上是QLabel类的一个对象。
在Qt Designer设计器中,它的图标如下图所示:
1.2 设置标签文本
有2种方法可以设置标签控件显示的文本:
方法1,直接在Qt Designer设计器的属性编辑器中设置它的text属性。如下图所示:
方法2,通过Python代码进行设置:
# 通过setText()方法将标签控件的显示内容设为“hello world”
self.label.setText('hello world')
1.3 设置标签控件内文本的对齐方式
PyQt5中支持设置标签中文本的对齐方式,主要用到alignment属性。在Qt Designer设计器的属性编辑器中展开alignment属性,可以看到有2个值,分别为Horizontal(水平的)和Vertical(垂直的)。
其中,Horizontal表示水平对齐,取值有4个,如下表所示:
取值
说明
AlignLeft
左对齐
AlignHCenter
水平居中对齐
AlignRight
右对齐
AlignJustify
两端对齐(效果同AlignLeft)
在Qt Designer设计器中的位置如下图所示:
不同取值的效果如下图所示:
以上是在属性编辑器中直接设置其属性的方法,除此之外,还有2种方法:
方法2:我们单击窗口中的Label控件,然后再单击右键菜单中的“改变多信息文本”,弹出一个编辑文本的窗口,在这个窗口的顶栏中有4种对齐方式可以设置,从左到右分别是:左对齐,中央对齐,右对齐,自动调整。
方法3:Python代码设置,写法都是一样的,只需要修改末尾最后一个单词即可,具体示例代码如下:
# AlignLeft:左对齐
self.label.setAlignment(QtCore.Qt.AlignLeft)
# AlignHCenter:水平居中对齐
self.label.setAlignment(QtCore.Qt.AlignHCenter)
# AlignRight:右对齐
self.label.setAlignment(QtCore.Qt.AlignRight)
# AlignJustify:两端对齐(效果同AlignLeft)
self.label.setAlignment(QtCore.Qt.AlignJustify)
代码运行效果如下图所示(为方便辨识,我将标签控件的背景色改成了粉色):
可以看到,它们都是在顶部左对齐、水平居中对齐、右对齐,而且是贴边的,这样很不美观,也不是我们想要的结果。
所以就需要结合Vertical了,Vertical是用来设置标签文本的垂直对齐方式,取值有3个。如下表:
取值
说明
AlignTop
顶部对齐
AlignVCenter
垂直居中对齐
AlignBottom
底部对齐
在Qt Designer设计器中的位置如下图所示:
不同取值的效果如下图所示:
可以看到,Vertical是上中下变化,而Horizontal是左中右变化。所以只要将它们2个结合起来,就能实现真正的居中。示例代码如下:
# 水平垂直居中
self.label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter)
代码运行效果如下图所示:
1.4 设置文本换行显示
假设将标签文本改为“路虽远行则将至,事虽难做则必成”,在标签宽度不足的情况下,系统会默认只显示前面部分文字。遇到这种情况时,我们就需要用到换行显示了。
换行显示是标签控件的属性之一,在Qt Designer设计器的属性编辑器中,将wordWrap属性后面的复选框选中即可实现换行显示。如下图:
当然也可以用Python代码实现:
# 通过QLabel类的setWordWrap()方法将文本设为换行显示
self.label.setWordWrap(True)
1.5 为标签设置超链接
为Label标签设置超链接时,可以直接在QLabel类的setText()方法中使用HTML中的标签设置超链接文本,然后将Label标签中的setOpenExternalLinks()方法设置为True,以便允许访问超链接,示例代码如下:
# 设置跳转链接和超链接文本(注意双引号和单引号)
self.label.setText(" 百度一下,你就知道 ")
# 启用跳转
self.label.setOpenExternalLinks(True)
代码运行后,标签内的文本会变成蓝色,并且带有下划线。当你单击文本后,则会立即跳转到目标网址。
1.6 为标签设置图片
为Label标签设置图片时,需要使用QLabel类的setPixmap()方法,该方法中需要有一个QPixmap对象,表示图标对象。示例代码如下:
# 导入QPixmap类
from PyQt5.QtGui import QPixmap
# 通过setPixmap()方法将名为abc的图片在标签内显示出来
self.label.setPixmap(QPixmap('abc.png'))
代码运行后效果如下图(为提高辨识,标签提前设置了水平布局,所以覆盖了整个窗口):
需要注意的是,该图片文件为png格式,并且放置在代码的同级路径下。另外,在PyQt5中暂不支持该方法显示jpg格式的图片,你可以通过其它工具先将格式转换成png,然后再显示。
1.7 为标签设置气泡提示信息
气泡提示就是当你把光标移动到某个控件上时,会弹出一个提示框。光标移开时,提示框又会自动消失,多数用于解释说明。写在这里只是想告诉你有这么个方法,而不仅局限于标签控件哦~
# 使用该方法需要导入2个模块:QToolTip和QFont
from PyQt5.QtWidgets import QToolTip
from PyQt5.QtGui import QFont
# 设置气泡提示内容为“这是李白写的诗”
self.label.setToolTip('这是李白写的诗')
# 设置提示文本的字体为微软雅黑,字号为12
QToolTip.setFont(QFont('微软雅黑', 12))
代码运行效果如下图所示:
2. LineEdit:单行文本框
2.1 简介
LineEdit是单行文本框,可以从字面意思理解,即:它只能输入单行字符串。它在Qt Designer设计器中的图标如下图所示: