用PyQt5显示爬虫进度的示例
本帖最后由 thepoy 于 2020-10-19 23:02 编辑class GUI(QWidget):
def __init__(self):
super(GUI, self).__init__()
self.tasks_lbl = QLabel("待处理数量:100,完成进度:0 %", self)
# self.tasks_lbl.adjustSize()
self.tasks_lbl.resize(550, 24)
self.tasks_lbl.move(210, 10)
def initUI(self):
# self.setFixedSize(500, 90)
self.resize(800, 150)
self.center()
self.main_widget = QWidget(self)
self.progressBar = QProgressBar(self.main_widget)
self.progressBar.setGeometry(QRect(20, 60, 760, 50))
self.setWindowTitle("爬虫")
self.thread_1 = Worker()
self.thread_1.progressBarValue.connect(self.spider)
self.thread_1.update_task_lbl.connect(self.task)
self.thread_1.start()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def spider(self, i):
self.progressBar.setValue(i)
def task(self, remain: int, percent: int):
if percent < 100:
self.tasks_lbl.setText(f"待处理数量:{remain},完成进度:{percent} %")
else:
self.tasks_lbl.setText("全部任务处理完成")
self.tasks_lbl.resize(600, 24)
# print(self.tasks_lbl.size())
self.tasks_lbl.move(125, 10)
class Worker(QThread):
progressBarValue = pyqtSignal(int)
update_task_lbl = pyqtSignal(int, int)
def __init__(self):
super(Worker, self).__init__()
self.excel_file = "./名录.xlsx"
self.df = pd.read_excel(self.excel_file)
def run(self):
for idx, row in self.df.iterrows():
result = Spider(row["column1"]).result
self.progressBarValue.emit(((idx + 1) * 100) // self.df["column1"].count())# 发送进度条的值 信号
self.update_task_lbl.emit(self.df["column1"].count() - idx - 1,
((idx + 1) * 100) // self.df["column1"].count())# 更新进度数量
if result:
self.df.loc] =
self.df.to_excel("结果.xlsx", index=False)
适当修改即可使用。
上面只是PyQT相关代码,其他代码就不提供了,下面的图片是示例:
Qlabel文字显示不全,可以调整label宽度微调,我懒得调了。
而且pyqt5的代码虽然能跨系统使用,但显示效果不同,不同系统上还得再调。
Loker 发表于 2020-10-20 11:17
我用pyqt5写了个评价工具,最后还是感觉H5好用,代码重新推了用flask写了个web版本。用pyqt写界面感觉很混 ...
是flask/django + 浏览器的形式写的吗? boxer 发表于 2020-10-19 23:02
python写界面还是用HTML好些吧, 毕竟学会一个简单的HTML, 一万种语言都一样写法
我也这么想过,但是没有具体的思路,就先用PyQt5实现了 细水流长 发表于 2020-10-19 22:39
想问下楼主,有没有比较好的pyqt5教程,pyqt5是不是不好学呀
python的GUI都不算好学,我对pyqt5也就是有问题找谷歌,没有系统地学过 python写界面还是用HTML好些吧, 毕竟学会一个简单的HTML, 一万种语言都一样写法 学习了感谢分享 感谢分享 我用pyqt5写了个评价工具,最后还是感觉H5好用,代码重新推了用flask写了个web版本。用pyqt写界面感觉很混乱。。 thepoy 发表于 2020-10-20 12:34
是flask/django + 浏览器的形式写的吗?
我学过一段时间Django,感觉还是flask适合小项目。
页:
[1]
2