一、单行文本框
- QLineEdit 是只能单行编辑的文本框,也叫单行输入框
- 信号:文本被修改
- 当文本框中的内容被键盘编辑,被点击就会发出 textChanged 信号,可以这样指定处理该信号的函数
line.textChanged.connect(function)
- Qt 在调用这个信号处理函数时,传入的参数就是文本框目前的内容字符串
- 信号:按下回车键
-
当用户在文本框中任何时候按下回车键,就会发出 returnPressed 信号
-
有时我们需要处理这种情况,比如登录界面,用户输完密码直接按回车键就进行登录处理,比再用鼠标点击登录按钮快捷的多,可以指定处理 returnPressed 信号,如下所示
line.returnPressed.connect(function)
- 注意:只有单行输入框才有 returnPressed 方法,多行输入框则没有该方法,强行使用则报错
- 方法:获取文本
- 通过 text 方法获取编辑框内的文本内容,如下所示
text = line.text()
print(text)
- 方法:设置提示
- 通过 setPlaceholderText 方法可以设置提示文本内容,如下所示
line.setPlaceholderText("请输入用户名")
- 方法:设置文本
- 通过 setText 方法设置编辑框内的文本内容为参数里面的文本字符串,但是会覆盖原来所有的内容(原来的所有内容会被清除),例如
line.setText("哈哈哈")
- 方法:插入文本
- 通过 insert 方法在编辑框内插入指定的字符串,该方法与setText类似,不同的是,该方法不会覆盖原来的内容,而是追加,在原有的内容末尾添加字符串
line.insert("你好呀!")
- 方法:清除所有文本
- clear 方法可以清除编辑框内所有的文本内容,例如
line.clear() # 会删除编辑框内所有的内容
- 方法:拷贝文本到剪贴板
- copy 方法可以拷贝当前选中文本到剪贴板,例如
line.copy()
- 方法:粘贴剪贴板文本
- paste 方法可以把剪贴板内容,拷贝到编辑框当前光标所在处,例如
line.paste()
二、多行纯文本框
-
多行文本框在 QWidget 里面有两个:QPlainTextEdit(纯文本框) 和 QTextEdit(富文本框)
-
我们用的最多的就是纯文本框,而 QPlainTextEdit 是可以 多行 的纯文本编辑框
- 信号:文本被修改
- 与单行文本框一样,当文本框中的内容被键盘编辑,被点击就会发出 textChanged 信号,可以这样指定处理该信号的函数
more_edit.textChanged.connect(function)
- 信号:光标位置改变
- 当文本框中的光标位置变动,就会发出 cursorPositionChanged 信号,可以这样指定处理该信号的函数
more_edit.cursorPositionChanged.connect(function)
- 方法:获取文本
- 与单行文本框不同,多行文本框通过 toPlainText 方法获取编辑框内的文本内容
test = more_edit.toPlainText()
print(test)
- 方法:获取选择文本
# 获取 QTextCursor 对象
textcursor = more_edit.textCursor()
select_text = textcursor.selectedText()
- 方法:设置提示
- 与单行文本一样,多行文本设置提示通过 setPlaceholderText 方法可以设置提示文本内容
more_edit.setPlaceholderText("你好呀!")
- 方法:设置文本
- 与单行文本框不同,多行文本设置文本通过 setPlainText 方法设置编辑框内的文本内容为参数里面的文本字符串,光标任然在最开始的位置
more_edit.setPlainText("哈哈哈")
- 原来的所有内容会被清除
- 方法:在光标处插入文本
- 通过 insertPlainText 插入指定内容,该方法与 setPlainText 不同,该方法不会覆盖原来的内容,而是追加,在原来的文本内容后面追加参数里面的字符串
more_edit.insertPlainText("python")
- 注意:这种方法不会在添加文本前自动换行
- 方法:在末尾添加文本
- 通过 appendPlainText 方法在编辑框末尾添加文本内容
more_edit.appendPlainText("你好呀")
- 注意:这种方法会在添加文本前 自动换行,然后添加参数里面的字符串
- 方法:清除所有文本
- clear 方法可以清除编辑框内所有的文本内容
more_edit.clear() # 该方法会清除编辑框内所有的内容
- 方法:拷贝文本到剪贴板
- copy 方法可以拷贝当前选中文本到剪贴板
more_edit.copy()
- 方法:粘贴剪贴板文本
- paste 方法可以把剪贴板内容,拷贝到编辑框当前光标所在处
more_edit.paste()
三、文本浏览框
-
QTextBrowser 是 只能查看文本 控件
-
通常用来显示一些操作日志信息、或者不需要用户编辑的大段文本内容
-
该控件 获取文本、设置文本、清除文本、剪贴板复制粘贴 等等, 都和上面介绍的多行纯文本框是一样的
-
下面我们主要讲解不同点
- 方法:在末尾添加文本
- 通过 append 方法在编辑框末尾添加文本内容,在添加文本前,自动换行,再添加文本
browsertext.append("你好")
-
有时,浏览框里面的内容长度超出了可见范围,我们在末尾添加了内容,往往希望控件自动翻滚到当前添加的这行
-
可以通过 ensureCursorVisible 方法来实现
browsertext.append("你好")
browsertext.ensureCursorVisible()
- 方法:再光标处插入文本
- 通过 insertPlainText 方法在编辑框末尾添加文本内容
browsertext.insertPlainText("哈哈哈")
- 注意:这种方法不会在添加文本前自动换行
四、标签
- QLabel 就是常见的标签,可以用来显示文字(包括纯文本和富文本)、图片 甚至动画
内容 | 设置 |
---|---|
纯文本 | 将字符串传递给 setText() |
富文本 | 将富文本传递给 setText() |
图片 | 将 QPixmap 对象传递给 setPixmap() |
动画 | 将 QMovie 对象传递给 setMovie() |
数字 | 将 int或 double数字传递给 setNum(),将数字转为纯文本 |
空 | 与纯文本相同,这是默认的,由 clear()设置 |
- 方法:改变文本
- 代码中可以使用 setText 方法来改变标签文本内容,例如
label.setText("我是一个标签")
- 显示图片
- QLabel 可以用来显示图片,有时一个图片可以让界面好看很多,如下图所示
pix = QPixmap("logo1.png")
label.setPixmap(pix)
- 显示换行
-
当QLabel内容较多的时候,里面的内容可以换行
-
将 WordWrap 的属性设置为 True,实现自动换行,默认是不能自动换行的
label = QLabel(QWidget)
label.setWordWarp(True)
- 对齐方式
-
QLabel内容的对齐方式:这里我们给出了三个:左中、中间、右中
-
水平标志是:
对齐方式 | 描述 |
---|---|
Qt.AlignLeft | 靠左边缘对齐 |
Qt.AlignRight | 靠右边缘对齐 |
Qt.AlignHCenter | 水平居中 |
- 垂直标志是:
对齐方式 | 描述 |
---|---|
Qt.AlignTop | 靠上端对齐 |
Qt.AlignBotton | 靠下端对齐 |
Qt.AlignVCenter | 垂直居中 |
- 一次最多可以使用一个水平和一个垂直标志。当然凡是也有例外,下面的就可以可表现出两个属性。
- Qt.AlignCenter: 水平、垂直居中