gpt4 book ai didi

python - 我不明白为什么多线程代码无法获取 lineedit.text()

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:42 27 4
gpt4 key购买 nike

我写的代码如下:

class QWidgetUI(QWidget):
def __init__(self):
super().__init__()
self.IDinput = QLineEdit(self)
self.searchBtn = QPushButton("🔍",self)

并制作多线程代码,如下所示:

def __init__(self, parent=None):

super(self.__class__, self).__init__(parent)
self.gui = QWidgetUI()

self.worker = Worker()
self.workerThread = QThread()
self.worker.moveToThread(self.workerThread)
self.workerThread.start()

self.connectSignal()

self.gui.show()

def connectSignal(self):
self.gui.searchBtn.clicked.connect(self.worker.conductCrolling)

而conductCrolling是这样的:

class Worker(QObject):
def __init__(self, parent = None):
super(self.__class__, self).__init__(parent)

@pyqtSlot()
def conductCrolling(self):
j = 0
searchingHtml = urlopen('https://www.twitter.com/{}/media'.format(self.gui.IDinput.text()))

在第一个代码中,self.gui.IDinput.text()具有我输入的正确值。
但在第三段代码中,为什么第 8 行的 self.gui.IDinput.text() 没有任何值?

最佳答案

您不应该从另一个线程访问 GUI,也不可以使用您的代码访问 GUI,因为在函数conductCrolling 中,self 引用了 Worker 类的对象,并且显然 Worker 没有 gui 的属性。解决方案是在调用conductCrolling函数时将其作为参数传递给文本,为此您可以使用partial和QTimer:

from functools import partial

# ...

def __init__(self, parent=None):
super(self.__class__, self).__init__(parent)
self.gui = QWidgetUI()
self.worker = Worker()
self.workerThread = QThread()
self.worker.moveToThread(self.workerThread)
self.workerThread.start()
self.connectSignal()
self.gui.show()

def connectSignal(self):
self.gui.searchBtn.clicked.connect(self.launchTask) # change connection

def launchTask(self):
wrapper = partial(self.worker.conductCrolling, self.gui.IDinput.text()) # add text
QTimer.singleShot(0, wrapper) # invoked conductCrolling function
<小时/>
class Worker(QObject):
@pyqtSlot(str) # <---- add str
def conductCrolling(self, text): # <--- add text
# use text
searchingHtml = urlopen('https://www.twitter.com/{}/media'.format(text))

关于python - 我不明白为什么多线程代码无法获取 lineedit.text(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com