本帖最后由 thepoy 于 2020-10-19 23:02 编辑
[Python] 纯文本查看 复制代码 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[idx, ["column2", "column3", "column4"]] = [result.get("address"), result.get("email"), result.get("phone")]
self.df.to_excel("结果.xlsx", index=False)
适当修改即可使用。
上面只是PyQT相关代码,其他代码就不提供了,下面的图片是示例:
Qlabel文字显示不全,可以调整label宽度微调,我懒得调了。
而且pyqt5的代码虽然能跨系统使用,但显示效果不同,不同系统上还得再调。
|