Skip to content

部分图色 函数在pyside6中QThread,使用terminate强制停止子线程,并重新启动后报错 #140

@XYZZ-404

Description

@XYZZ-404

屏幕截图 2024-05-11 082741

简单的复现代码:

`from win32com.client import Dispatch
op = Dispatch("op.opsoft")
import sys
from PySide6.QtCore import QThread
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton

class WorkerThread(QThread):

def __init__(self):
    super().__init__()
    self.op = op

def run(self):
    for i in range(100):
        cmp_color = self.op.CmpColor(0, 0, "ffffff", 1)
        self.op.Delay(1000)
        print(cmp_color)
    self.finished.emit()

class MainWindow(QWidget):
def init(self):
super().init()
self.initUI()

def initUI(self):
    layout = QVBoxLayout()
    self.startButton = QPushButton('Start Thread', self)
    self.stopButton = QPushButton('Kill Thread', self)
    self.startButton.clicked.connect(self.startThread)
    self.stopButton.clicked.connect(self.killThread)
    layout.addWidget(self.startButton)
    layout.addWidget(self.stopButton)
    self.setLayout(layout)

def startThread(self):
    print("Starting thread...")
    self.thread = WorkerThread()
    self.thread.start()

def killThread(self):
    print("Killed thread...")
    self.thread.terminate()

if name == 'main':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

`
这段代码在启动后,第一次启停线程时正常运行,第二次启动时,每次试图调用cmpcolor都会弹窗
目前测试结果,findcolor,cmpcolor,getcolor均会报错,而其他类别的函数如keypress等不会报错

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions