所以我正在使用PyQt5
制作一个真正的简单的记事本GUI,并且我有Find
功能,它将搜索关键字在QTextEdit()
条目中的出现。我希望我的应用程序在每次输入新字符时更新突出显示的文本。这在PyQt5中可能吗?
以下是我的函数的外观
def find(self):
self.find_text = QInputDialog()
self.find_text.getText(self, "Search Text", "Find:")
self.find_text.textValueChanged.connect(self.select)
def select(self):
print('sd')
print(self.find_text.textValue())
您必须使用QInputDialog的textValueChanged信号。
from PyQt5.QtWidgets import (
QApplication,
QInputDialog,
QPushButton,
QTextEdit,
QVBoxLayout,
QWidget,
)
class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
button = QPushButton("Find")
self.text_edit = QTextEdit()
lay = QVBoxLayout(self)
lay.addWidget(button)
lay.addWidget(self.text_edit)
self.input_dialog = QInputDialog()
self.input_dialog.setWindowTitle("Search Text")
self.input_dialog.setLabelText("Find:")
self.input_dialog.textValueChanged.connect(self.search)
button.clicked.connect(self.input_dialog.show)
def search(self, text):
print("search: ", text)
def main():
app = QApplication([])
w = Widget()
w.show()
app.exec_()
if __name__ == "__main__":
main()
注意:不要使用像getText((这样的静态方法。