如果您想要一些“延迟”,您可以尝试使用计时器。
将有两种使用它们的方法(具有不同的结果)。
一种是在一段时间没有输入后才解析
注意:我只知道 C++ Qt,但我认为同样的事情对 pyqt 有效,所以这是一种“伪代码”,但我希望你能明白这个概念。
QTimer timer; //somewhere
timer.setSingleShot(true); //only fire once
connect(timer,QTimer::timeout(),OnTimerDone(...);
OnTextChanged(...)
{
timer.start(500); //wait 500ms
}
OnTimerDone(...)
{
DoStuff(...);
}
这将在每次输入时重新启动计时器,因此当您调用它并且计时器未完成时,timeout不会发出信号。当一段时间内没有输入时,计时器超时并解析文件。
第二种选择是运行定期计时器(singleShot(false))。
只需像每秒一样启动计时器。并将timeout每秒调用一次。您可以将其与在输入更改时设置为 true 并在解析文件时设置为 false 的变量结合使用。因此,当没有任何变化时,您可以避免解析。
在 C++Qt 中,您不必担心多线程,因为插槽在 GUI 线程中被调用。我认为这对 python 是一样的,但你应该检查一下。