pyqt5 textEdit、lineEdit操作的示例代码
### PyQt5中TextEdit与LineEdit操作详解 在PyQt5中,`QTextEdit`与`QLineEdit`是非常重要的组件,它们分别用于多行文本编辑和单行文本编辑。本文将详细介绍如何在PyQt5应用程序中使用这两个组件,并提供一系列实用的示例代码。 #### 1. 定义`QTextEdit`和`QLineEdit` - **定义`QTextEdit`**: ```python self.textEdit = QtWidgets.QTextEdit(Dialog) self.textEdit.setGeometry(QtCore.QRect(70, 90, 171, 391)) self.textEdit.setObjectName("textEdit") self.textEdit.setReadOnly(True) # 设置为只读,即可以在代码中向textEdit里面输入,但不能从界面上输入 ``` - **定义`QLineEdit`**: ```python self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(70, 90, 171, 20)) # 注意调整大小以适应单行输入 self.lineEdit.setObjectName("lineEdit") ``` #### 2. 从代码中将字符串显示到`QTextEdit` - **设置文本内容**: ```python str_text = '要显示的字符串' self.textEdit.setText(str_text) ``` - **追加文本**: ```python str_append = '要追加的字符串' self.textEdit.append(str_append) ``` 注意,`QTextEdit`的`append()`方法与`setText()`不同,它可以将新的字符串追加到已有文本之后。 #### 3. 显示数字到`QTextEdit` 由于`QTextEdit`只能处理字符串类型的数据,因此需要先将数字转换为字符串形式。 ```python count = 10 str_num = str(count) self.textEdit.setText(str_num) ``` #### 4. 读取`QTextEdit`中的文字 - **读取`QTextEdit`内容**: ```python str1 = self.textEdit.toPlainText() ``` - **读取`QLineEdit`内容**: ```python str2 = self.lineEdit.text() ``` #### 5. PyQt5 `QTextEdit` 控件操作示例 接下来是一个更复杂的例子,展示如何创建自定义的`QTextEdit`控件,以及如何响应其中的事件,如鼠标点击等。 ```python from PyQt5.Qt import * import sys # 自定义TextEdit类 class MyTextEdit(QTextEdit): def mousePressEvent(self, me): print(me.pos()) # 打印鼠标点击的位置 link_str = self.anchorAt(me.pos()) # 获取点击位置的链接 if len(link_str) > 0: QDesktopServices.openUrl(QUrl(link_str)) # 打开链接 return super().mousePressEvent(me) class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QTextEdit的学习") self.resize(500, 500) self.setWindowIcon(QIcon("D:/ICO/ooopic_1540562292.ico")) self.setup_ui() def setup_ui(self): te = MyTextEdit(self) self.te = te te.move(100, 100) te.resize(300, 300) te.setStyleSheet("background-color:cyan;") but = QPushButton(self) but.move(50, 50) but.setText("测试按钮") but.pressed.connect(self.but_test) def but_test(self): # 在TextEdit中插入HTML内容 self.te.insertHtml("<a href='http://www.example.com'>点击这里访问示例网站</a>") # 监听文本变化 self.te.textChanged.connect(self.text_change) # 监听选择文本变化 self.te.selectionChanged.connect(self.selection_change) # 监听复制功能是否可用 self.te.copyAvailable.connect(self.copy_a) def copy_a(self, yes): print("复制是否可用:", yes) def selection_change(self): print("文本选中的内容发生了改变") def text_change(self): print("文本内容发生了改变") if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) ``` 以上代码展示了如何创建一个自定义的`QTextEdit`控件,该控件能够响应鼠标点击事件并打开超链接。此外,还展示了如何使用按钮触发不同的操作,如插入HTML内容、监听文本变化等。这些示例可以帮助开发者更好地理解和应用`QTextEdit`与`QLineEdit`控件。