有没有一种方法可以在PyQt5中每次在QInputDialog()中输入字母时调用函数



所以我正在使用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((这样的静态方法。

最新更新