擅长:python、mysql、java
<p>我选择重写这个答案,因为我没有正确地看待问题的背景。正如其他答案和注释所说,您的代码缺乏线程安全性。在</p>
<p>解决这个问题的最好方法是试着真正地“在线程中”思考,限制自己只使用生活在同一线程中的对象,或者被称为“线程安全”的函数。在</p>
<p>加入一些信号和插槽会有所帮助,但也许你想回想一下你最初的问题。在当前代码中,每按一个按钮,<strong>就会启动一个新线程</strong>,该线程每10秒执行两个操作:
-阅读<code>self.text</code>中的一些文本
-将其附加到<code>self.bilgiler</code></p>
<p>这两个操作都是非线程安全的,必须从拥有这些对象的线程(主线程)调用<strong>。您希望让工作线程“调度并等待”read&append操作,而不是简单地“执行”它们。在</p>
<p>我建议使用另一个答案(线程停止问题是通过使用与Qt的事件循环很好地集成的适当的qthread自动修复的),这将使您使用更干净的方法,与Qt更集成。在</p>
<p>您可能还需要重新考虑您的问题,因为可能有一种更简单的方法来解决您的问题,例如:不在每次单击<code>bilgi_cek</code>时生成线程,或者使用<code>Queue</code>对象,这样您的工作人员就完全不知道您的GUI,并且只使用线程安全对象与它交互。在</p>
<p>祝你好运,如果我给你带来什么麻烦,对不起。我原来的答案仍然有效<a href="https://stackoverflow.com/revisions/39605384/2">here</a>。我认为把另一个答案作为这个问题的有效答案是明智的。在</p>