class Ux(QMainWindow, window.Ui_MainWindow):
@pyqtSlot()
def do_stop_search(self):
pass
@pyqtSlot(dict)
def do_append_result(self, item):
pass
def on_btn_search_clicked(self):
self.search = SearchThread(self, text)
self.search.run()
class SearchThread(QThread):
to_append_result = pyqtSignal([dict])
to_stop_search = pyqtSignal()
def __init__(self, obj, key_word):
super().__init__()
self.site = obj.site # obj.site is a class
self.key = key_word
self.to_append_result.connect(obj.do_append_result)
self.to_stop_search.connect(obj.do_stop_search)
def run(self):
search = self.site(self.to_append_result)
search.search(self.key) # do a lot of things
self.to_stop_search.emit()
请问这个实现哪里出了问题?
1
dychenyi 2018-04-22 15:31:37 +08:00
没用过 pyqt,但是在用原生 qt,qt 起线程不是 start 吗? 你怎么直接调用 run。。。
|
2
catror 2018-04-22 16:09:34 +08:00 via Android
因为你在 ui 线程里调用的 run 函数,创建的新线程没用
|
3
nicevar 2018-04-22 16:28:47 +08:00
楼主你要补一下基础知识,你这直接调用 run 怎么能行呢,跟不用线程还有啥区别,用 start 启动线程
|
7
Hopetree 2018-04-22 20:55:54 +08:00
strat() 正解,以前我也写过 pyqt,现在感觉真麻烦,还不如写成 web
|
9
Hopetree 2018-04-24 13:10:59 +08:00
@xwyam 当然是 python 啊,你看一下我博客的工具页面,前面的三个工具都是利用的 Python 的爬虫完成的后台,然后把结果传递到前台展现,ajax 传递数据就行了,这是小爬虫。如果是耗时间比较长的爬虫可以设置定时任务让 python 爬,然后把结果存起来,前台要调用的时候去读取结果就行了,这是我理解的方式
|
10
Hopetree 2018-04-24 13:12:27 +08:00
@xwyam 忘了发博客工具页面的链接了 http://www.tendcode.com/tool/,还有我以前写的 pyqt 的工具,是多线程的任务,https://github.com/Hopetree/TMTools
|