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/