请教在pyqt5里面为何一点击按钮进行响应进程就自动结束没有报错?
#!/usr/bin/python
# -*- coding:utf-8 -*-
'''os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"
headers = {'User-Agent': user_agent}
start_urls = 'http://tieba.baidu.com/f/search/res?ie=utf-8'
kw = 'eng'
url = start_urls + kw
request=urllib.request.Request(url,headers=headers)
reponse=urllib.request.urlopen(request).read()
print(reponse)
'''
#!/usr/bin/env python
# -*- coding :gb2312 -*-
import urllib.request
import urllib.parse
import sys
from urllib.request import urlopen
from bs4 import BeautifulSoup
import time
import tiebaUI
class TieBa():
def __init__(self):
app = tiebaUI.QtWidgets.QApplication(sys.argv)
MainWindow = tiebaUI.QtWidgets.QMainWindow()
MainWindow.show()
self.ui = tiebaUI.Ui_MainWindow()
self.ui.setupUi(MainWindow)
self.ui.pushButton.clicked.connect(TieBa.start)
self.kw = "222"
self.kw2 = "333"
self.beginPage = endPage = 0
self.kw_url = "http://tieba.baidu.com/f?"
self.kw2_url = "http://tieba.baidu.com"
self.ui.textEdit.setText('不需要带“吧”字')
sys.exit(app.exec_())
def writeAl(self,all_nr_print):
# now = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
# now = time.strftime("%Y%m%d%H", time.localtime(time.time()))
# fname = (kw + "吧_" + kw2 + now + r".txt")
'''
fname = (self.kw + "吧_P" + str(self.beginPage) + "-P" + str(self.endPage) + "_" + self.kw2 + r".txt")
with open(fname, 'a') as f:
f.write(all_nr_print+"\n")
'''
def all_nr(self,full_url):
html = urlopen(full_url)
bsObj = BeautifulSoup(html, 'html.parser')
t1 = bsObj.find_all('a')
for t2 in t1:
t3 = str(t2.get('href'))
t31 = str(t2.get('title'))
if len(t3) == 13:
if self.kw2 in t31:
all_nr_print = t31 + " " + str(self.kw2_url) + str(t3)
print(all_nr_print)
self.writeAl(all_nr_print)
def tiebaSpider(self,kw_url, beginPage, endPage):
for page in range(beginPage, endPage + 1):
pn = (page - 1) * 50
full_url = kw_url + "&pn=" + str(pn)
#print("\n%s"% full_url)
self.all_nr(full_url)
# writeAl(full_url)
def start(self):
print('111')
self.kw = '222'
print(self.kw)
问题在这里,点击按钮之后能正常输出111,但是后面就自动退出了,这个令self.kw = 222也是用来测试的,其实是如下被注释的代码,想获取文本框内容然后赋值给kw。但是臣妾做不到啊,求大佬指教一下,自己真的解决不来了,只能来发帖了.....
# self.kw2 = ui.textEdit.toPlainText()
# self.beginPage = ui.textEdit_3.toPlainText()
# self.endPage = ui.textEdit_4.toPlainText()
# print('222')
# kw_key = urllib.parse.urlencode({"kw": self.kw})
# full_url = self.kw_url + kw_key
# self.tiebaSpider(full_url, self.beginPage, self.endPage)
#print(self.kw,self.kw2,self.beginPage,self.endPage)
'''
kw = input('请输入贴吧名:')
beginPage = int(input("请输入起始页:"))
endPage = int(input("请输入结束页:"))
kw2 = input('请输入帖子主题的\"关键词\":')
kw_url = "http://tieba.baidu.com/f?"
kw2_url = "http://tieba.baidu.com"
kw_key = urllib.parse.urlencode({"kw": kw})
full_url = kw_url + kw_key
tiebaSpider(full_url, beginPage, endPage)
'''
if __name__ == '__main__':
TieBa()
刚开始学pyqt5做爬虫界面,可能有些代码写的很奇怪,主要是一直在该描述的错误,到后面改得很乱了。另外我是引用的ui文件,然后逻辑是在上面这个py文件里面实现的,没有问题吧。
ui.py的代码如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'tiebaUI.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QHeaderView
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1000, 450)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMinimumSize(QtCore.QSize(1000, 450))
MainWindow.setMaximumSize(QtCore.QSize(1000, 450))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 10, 81, 31))
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(100, 10, 150, 31))
self.textEdit.setObjectName("textEdit")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(280, 10, 81, 31))
self.label_2.setTextFormat(QtCore.Qt.AutoText)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_2.setGeometry(QtCore.QRect(370, 10, 150, 31))
self.textEdit_2.setObjectName("textEdit_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(580, 10, 81, 31))
self.label_3.setTextFormat(QtCore.Qt.AutoText)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_3.setGeometry(QtCore.QRect(670, 10, 71, 31))
self.textEdit_3.setObjectName("textEdit_3")
self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_4.setGeometry(QtCore.QRect(860, 10, 71, 31))
self.textEdit_4.setObjectName("textEdit_4")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(770, 10, 81, 31))
self.label_4.setTextFormat(QtCore.Qt.AutoText)
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(10, 140, 981, 271))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tableWidget.sizePolicy().hasHeightForWidth())
self.tableWidget.setSizePolicy(sizePolicy)
self.tableWidget.setMidLineWidth(1)
self.tableWidget.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.tableWidget.setAutoScroll(True)
self.tableWidget.setTabKeyNavigation(True)
self.tableWidget.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem)
self.tableWidget.setColumnCount(3)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setRowCount(0)
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setHorizontalHeaderItem(0, item)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(860, 70, 121, 61))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(320, 80, 521, 41))
self.lineEdit.setObjectName("lineEdit")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(240, 80, 71, 41))
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(20, 70, 141, 21))
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(20, 100, 141, 21))
self.label_7.setObjectName("label_7")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "贴吧关键词帖子筛选工具"))
self.label.setText(_translate("MainWindow", "吧名:"))
self.label_2.setText(_translate("MainWindow", "关键字:"))
self.label_3.setText(_translate("MainWindow", "起始页:"))
self.label_4.setText(_translate("MainWindow", "结束页:"))
self.tableWidget.setHorizontalHeaderLabels(['贴名','地址','时间'])
self.pushButton.setText(_translate("MainWindow", "开始"))
self.label_5.setText(_translate("MainWindow", "当前状态:"))
self.label_6.setText(_translate("MainWindow", "作者:KONMIN"))
self.label_7.setText(_translate("MainWindow", "版本:v0.0.1"))
相关推荐
用pyqt5 给按钮设置图标和css样式的方法
在PyQT5中,我们可以利用Qt的图形用户界面(GUI)功能来创建丰富的应用程序。其中,为按钮设置图标和CSS样式是提升应用视觉效果的重要手段。这篇文章将详细讲解如何使用PyQT5实现这一功能。
YOLOv5进阶 | 利用PyQt搭建YOLOv5目标检测系统(附可视化界面+功能介绍+源代码)
系统支持输入图片、视频、摄像头和RTSP视频流的目标检测,其中,可以对图片进行处理,包括灰度化、平滑处理、均衡化、形态学、图像梯度、阈值处理、边缘检测、轮廓检测、直线检测、亮度调节和伽玛校正。
PyQt5桌面GUI开发:从信号槽到多线程的Python跨平台实践
桌面GUI开发是软件工程中的重要领域,它涉及创建用户可直接交互的图形界面应用程序。其核心原理在于事件驱动编程模型,通过响应用户输入和系统事件来更新界面状态。在技术价值层面,优秀的GUI框架能显著提升开发效率、增强应用稳定性和跨平台兼容性。Python作为主流编程语言,在数据分析、机器学习等领域广泛应用,而PyQt5正是连接Python生态与专业级桌面开发的关键桥梁。它基于成熟的Qt框架,通过信号与槽机制实现松耦合通信,支持模型/视图架构处理大数据展示,并提供了QThread解决方案来避免界面卡顿。这些特性使
Pyqt5如何让QMessageBox按钮显示中文示例代码
### Pyqt5中QMessageBox按钮显示中文的方法在Pyqt5开发中,`QMessageBox`是一种非常常用的对话框组件,用于向用户展示消息或请求用户的输入。
Python中PyQt5/PySide2的按钮控件使用实例
### 处理按钮点击事件按钮控件的一个关键功能是响应用户的点击操作。我们可以使用`clicked`信号与槽机制来实现这一点。


