博主头像
CFX | Work

一个业余的分享网站

Qt for Python

1. QLabel

PySide2.QtWidgets.QLabel

QLabel用于显示文本、图像、视频,可以设置该控件的外观属性,比如大小、颜色、位置等,一般都会用来较短的文本:

  • 纯文本
  • 富文本
  • 数值
  • 像素图
  • 动画

1.1 纯文本

label = QLabel("初始文本")        # ()内可以为空,后面可以设置
label.setText("设置新文本")        # 用setText()方法修改原始文本内容
label.setText("%d, %f" % (10, 10.1))    # 调用方法,修改文本内容,参考python格式化字符串

label.text() ->str    #获取文本内容

label.setWordWrap(True)        # 自动换行(默认False)
label.wordWrap() -> bool        # 返回是否自动换行

# 背景颜色
label.setAutoFillBackground(True)  # 允许自动填充背景
palette = QPalette()  # 定义一个调色板对象
palette.setColor(QPalette.Window, Qt.blue)  # 配置调色板
label.setPalette(palette)  # 使用配置好的调色板


#对齐方式
label.setAlignment(Qt.AlignCenter)    #中心对齐
label.setAlignment(Qt.AlignLeft)    # 左对齐
label.setAlignment(Qt.AlignRight)    # 右对齐
label.setAlignment(Qt.AlignTop)        # 上对齐
label.setAlignment(Qt.AlignBottom)    # 下对齐
# 可以互相搭配使用,两个对齐方式之间用 | 分隔。

label.setIndent(40)        # 设置文本缩进,根据文本的对齐方式,决定在那个方向缩进
label.indent() -> int    # 返回缩进的值

label.setMargin(30)        # 设置文本边距
label.margin()    -> int        # 返回文本编剧的值

label.setFixedSize(50, 50)    #设置文本的显示范围,如果超过范围,最好启用自动换行

label = setTextFormat()        # 设置文本的格式风格,默认为AutoText,还有PlainText(纯文本)、RichText(富文本)、MarkdownText(MD格式文本)

# 设置选择的文本
label.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard)    # 设置之前需要设置选择文本的方式(键盘光标选择和鼠标选择)
label.setSelection(0,3)        # 选择文本,两个参数,(从第一位开始选, 一共选择多少个字符(需要小于剩余字符的最大范围))
print(label.selectedText())    ->str    # 打印所选的文本
print(label.selectionStart()) -> int    # 打印从第几位开始选择的

label.clear()        # 清除所有内容
tip: setBuddy设置同伴,配合QLineEdit控件,可以利用快捷键定位,在QLineEdit中会提到
# setFrameStyle() 文本的面板样式
label.setFrameStyle(QFrame.Panel)    # 面板
label.setFrameStyle(QFrame.Raised)    # 凸起的
label.setFrameStyle(QFrame.Sunken)    # 凹陷的
label.setFrameStyle(QFrame.Plain)    # 明显的边框(系统主题)
label.setFrameStyle(QFrame.Box)        # 带宽边框 
# 可以互相搭配使用,风格方式之间用 | 分隔。

参考如下(by Qt)

1.2 富文本

label.setText("<font size=20 color=red>第一行</font>")        # 使用html语法格式化文本的显示风格,参考html或者css

# 创建一个可点击的链接
label = QLabel('<a href="http://www.baidu.com">百度</a>')
label.setTextInteractionFlags(Qt.TextBrowserInteraction)
label.setOpenExternalLinks(True)

label.openExternalLinks() -> bool        # 返回是否可以打开外链

# QLabel的信号
label.linkActivated.connect(func)    #当文本被点击时,执行函数func
label.linkHovered.connect(func)        # 当鼠标放在文本上时,执行函数func

1.3 数值

label.setNum(123456)        # 把数字(整数或浮点数)当作文本显示,如果是整数类型,而数值太大,需要转成浮点,即.0,将会以科学记数法的形式显示

1.4 像素图

label = QLabel()    # 创建一个空文本的对象
pixMap = QPixmap("./path/path.jpg")        # 创建一个包含图片路径的QPixmap对象
label.setPixmap(pixMap)        # 传递参数给空文本
label.setFixedSize(50, 50)    # 设置图片大小,如果设置太小或者太大,需要设置下面的缩放
label.setMinimumSize(50, 50)    # 设置最小尺寸,如果设置太小或者太大,需要设置下面的缩放
label.setMaximumSize(200, 200)    # 设置最大尺寸,如果设置太小或者太大,需要设置下面的缩放
label.setScaledContents(True)        # 设置图片是否要需要根据窗口拉伸

#获取图片的尺寸,有助于更好的控制图片等比缩放
label.size().width() -> float
label.size().width() -> float

还有另一个显示图像的方法QPicture()

参数类型setPicture()方法接受一个QPicture对象作为参数。

用途QPicture是Qt的一个图形绘制记录类

如果只是单纯的显示图像,还是推荐QPixmap,QPixmap是专为在屏幕上显示而优化的图像表示

1.5 动画

label = QLabel()    # 创建一个空文本的对象
movie = QMovie("./path/path.gif")        # 创建一个包含图片路径的QPixmap对象
label.setMovie(movie)        # 传递参数给空文本

label.setScaledContents(True)        # 设置动画是否要需要根据窗口拉伸

movie.start()        # 播放动画,不能省略。放在show()之前
tip: QPixmap的属性同样适用于QMovie

2. QLineEdit

行编辑器允许用户输入和编辑一行纯文本,并提供有用的编辑功能,包括撤销和重做、剪切和粘贴以及拖放

​ from:Qt

一般用于用户名和密码的输入框,高级一些的操作可能需要QAction的控件配合

2.0 限制文本

lineEdit = QLineEdit()                    # 创建输入框对象

lineEdit.setMaxLength(10)                # 设置输入长度的限制
lineEdit.maxlength() -> int                # 返回设置限制长度的值

lineEdit.

2.1 输入显示模式

# 创建输入框对象
lineEdit = QLineEdit()

lineEdit.setEchoMode(QLineEdit.Normal)        # 正常样式(默认)
lineEdit.setEchoMode(QLineEdit.NoEcho)        # 无回显模式,类似于Linux输管理员密码
lineEdit.setEchoMode(QLineEdit.Password)    # 密码模式,显示圆点或星号
lineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)    # 编辑时显示正常文本,当文本框失去焦点以密码模式显示,再次激活焦点将清空已输入文本

lineEdit.echoMode() -> enum        # 返回显示模式,作为密码的显示/隐藏的判断依据(str(enum))

2.x 动作交互

比如验证一些输入的内容是否符合预期,或者切换显示的内容以可见文本和密码模式显示

lineEdit = QLineEdit()
action = QActiton("点我验证")        # 创建一个动作对象,当鼠标悬浮会有""提示,可省略
action.setText("新的提示")            # 可以单独设置
action.text() -> str                # 获取提示的文本
action.setIcon("./path.ico")        # 添加图标

action.triggered.connect(func)        # 绑定动作的槽函数
lineEdit.addAction(action, QLineEdit.LeadingPosition)        #把创建的动作添加到文本框的开头。
# QLineEdit.TrailingPosition -> 结尾  ---> 这里指的开头和结尾,以QLineEdit的布局为准

LeadingPosition 和 TrailingPosition

方法说明
QLineEdit.LeadingPosition当布局分别是LeftToRight和RightToLeft时,添加的位置在文本的最左侧和最右侧。
QLineEdit.TrailingPosition当布局分别是LeftToRight和RightToLeft时,添加的位置在文本的最右侧和最左侧。
Qt for Python
https://cfx.work/index.php/archives/27/
本文作者 silence
发布时间 2024-12-03
许可协议 CC BY-NC-SA 4.0
发表新评论