如何解决此线程化pyside代码中的“TypeError:”list“object is not callable”错误(在类似情况下似乎可以正常工作)?

2024-03-28 08:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的错误的完整回溯是:

> python zthreadtest_tjedit.py

None

Traceback (most recent call last):

File "zthreadtest_tjedit.py", line 17, in run self.function()

TypeError: 'list' object is not callable

我很抱歉,这段代码有点特定于系统,可能不能作为大多数人的可执行示例。希望这个解决方案足够简单,让人一目了然。如果您不是使用当前导入的zpool运行zfs,而是使用威尔.采埃孚模块安装后,它将返回一个空列表,其中启用了非线程代码(请参阅代码中有关切换线程的注释)。启用线程模块后,将抛出如上所示的错误。在

令我困惑的是joplaete(https://joplaete.wordpress.com/2010/07/21/threading-with-pyqt4/)的第二段代码运行时没有错误,我只是根据需要修改了这段代码。 编辑:这个导致差异的错误可能与我的代码中使用的list对象有关,而不是她的代码,但是我仍然需要使我的工作正常。在

我的问题是:如何解决我的错误,使我的线程模块正确运行?在

这看起来很简单,但我完全被难住了。这是我在任何帮助论坛上发布的第一个问题!我希望我的问题问得很好,谢谢你的帮助。在

我的代码,来自更大的pyside gui程序:

import PySide, sys
from PySide import QtCore, QtGui
from PySide.QtCore import *
from PySide.QtGui import *
import re, subprocess, threading
from weir import zfs

class WorkerThread(QThread):
    def __init__(self, function):
        QThread.__init__(self)
        self.function = function

    def __del__(self):
        self.wait()

    def run(self):
        self.function()
        return


class MainZ(QMainWindow):
    def __init__(self):
        super(MainZ, self).__init__()
        # print(self)
        # imported_pools = self.get_imported() # No threading
        imported_pools = self.thread_test()  # Use threading module

        print(imported_pools)

    def thread_test(self):
        self.threader = WorkerThread(self.get_imported())
        self.threader.start()

    def get_imported(self):
        pool_string = subprocess.getoutput(
            'zpool list |grep -v ^NAME.*SIZE.*ALLOC |grep -o ^[a-Z0-9]*')
        imported_pools = re.split(r'\s *', pool_string)
        return imported_pools


app = QApplication(sys.argv)
form = MainZ()
app.exec_()

我从Jo Plaete建模的代码,它对我来说毫无错误:

^{pr2}$

Tags: 模块代码fromimportselfinitdef错误
1条回答
网友
1楼 · 发布于 2024-03-28 08:17:18

    self.threader = WorkerThread(self.get_imported())

应该读

^{pr2}$

在创建线程时,您希望传递函数本身,而不是调用函数(它是一个列表)的结果。在

相关问题 更多 >