问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python写的GUI程序在运行中显示无反应

发布网友 发布时间:2022-05-10 21:42

我来回答

4个回答

懂视网 时间:2022-05-11 02:04

  1. pyqt4写的界面 find_ui.py

#-*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
 
try:
 _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
 def _fromUtf8(s):
 return s
 
try:
 _encoding = QtGui.QApplication.UnicodeUTF8
 def _translate(context, text, disambig):
 return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
 def _translate(context, text, disambig):
 return QtGui.QApplication.translate(context, text, disambig)
 
class Ui_Form(object):
 def setupUi(self, Form):
 Form.setObjectName(_fromUtf8("Form"))
 Form.resize(516, 467)
 self.label = QtGui.QLabel(Form)
 self.label.setGeometry(QtCore.QRect(20, 10, 54, 16))
 self.label.setObjectName(_fromUtf8("label"))
 self.edit_address = QtGui.QLineEdit(Form)
 self.edit_address.setGeometry(QtCore.QRect(80, 10, 351, 20))
 self.edit_address.setObjectName(_fromUtf8("edit_address"))
 self.button_search = QtGui.QPushButton(Form)
 self.button_search.setGeometry(QtCore.QRect(440, 10, 61, 23))
 self.button_search.setObjectName(_fromUtf8("button_search"))
 self.text_all = QtGui.QTextEdit(Form)
 self.text_all.setGeometry(QtCore.QRect(20, 40, 411, 261))
 self.text_all.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
 self.text_all.setObjectName(_fromUtf8("text_all"))
 self.label_2 = QtGui.QLabel(Form)
 self.label_2.setGeometry(QtCore.QRect(20, 320, 54, 12))
 self.label_2.setObjectName(_fromUtf8("label_2"))
 self.text_exist = QtGui.QTextEdit(Form)
 self.text_exist.setGeometry(QtCore.QRect(20, 340, 411, 64))
 self.text_exist.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
 self.text_exist.setObjectName(_fromUtf8("text_exist"))
 self.label_3 = QtGui.QLabel(Form)
 self.label_3.setGeometry(QtCore.QRect(380, 310, 91, 20))
 self.label_3.setText(_fromUtf8(""))
 self.label_3.setObjectName(_fromUtf8("label_3"))
 self.edit_add = QtGui.QLineEdit(Form)
 self.edit_add.setGeometry(QtCore.QRect(20, 420, 411, 20))
 self.edit_add.setObjectName(_fromUtf8("edit_add"))
 self.button_add = QtGui.QPushButton(Form)
 self.button_add.setGeometry(QtCore.QRect(440, 420, 71, 23))
 self.button_add.setObjectName(_fromUtf8("button_add"))
 self.label_4 = QtGui.QLabel(Form)
 self.label_4.setGeometry(QtCore.QRect(20, 440, 251, 16))
 self.label_4.setObjectName(_fromUtf8("label_4"))
 
 self.retranslateUi(Form)
 QtCore.QMetaObject.connectSlotsByName(Form)
 
 def retranslateUi(self, Form):
 Form.setWindowTitle(_translate("Form", "目录探测工具", None))
 self.label.setText(_translate("Form", "网站地址:", None))
 self.button_search.setText(_translate("Form", "探测", None))
 self.label_2.setText(_translate("Form", "结果:", None))
 self.button_add.setText(_translate("Form", "添加地址", None))
 self.label_4.setText(_translate("Form", "例如:/admin/manager.asp 请以斜杠开始", None))

2. 启动文件 start.py

#!/usr/local/bin/python
#coding=utf-8
 
import sys
import os
import time
import httplib
import re
from PyQt4 import QtCore, QtGui
from threading import Thread
 
from find_ui import Ui_Form
 
 
class MyForm(QtGui.QMainWindow):
 def __init__(self, parent=None):
 QtGui.QWidget.__init__(self, parent)
 self.ui = Ui_Form()
 self.ui.setupUi(self)
 QtCore.QObject.connect(self.ui.button_search,QtCore.SIGNAL("clicked()"), self.startthread)
 QtCore.QObject.connect(self.ui.button_add,QtCore.SIGNAL("clicked()"), self.addAddress)
 def startSearch(self):
 self.ui.label_3.setText("")
 self.getAddress()
 address=str(self.ui.edit_address.text())
 self.accessAddesss(address)
  
 def startthread(self):
 t1=Thread(target=self.startSearch,)
 t1.start()
  
  
 def getAddress(self):
 try:
  global addresslist
  addresslist=[]
  filePath=os.getcwd()+"address.txt"
  # if not os.path.isfile(filePath):
  # print 'aaa'  
  # return 0
   
  fileAddress=file(filePath,"r")
  for address_line in fileAddress.readlines():
  if address_line not in addresslist:
   addresslist.append(address_line)
   pass
  pass
  pass
  fileAddress.close()
  
 except:
  #self.ui.text_all.setText('aaa')
  self.ui.text_all.setText(u'打开文件错误')
  pass
 finally:
  #fileAddress.close()
  pass
 # print addresslist[0]
 
 def accessAddesss(self,host):
 try:
  print host
  print len(addresslist)
  for oneAddress in addresslist:
  print len(addresslist)
  oneAddress=oneAddress.replace("
","")
  print oneAddress
  connection=httplib.HTTPConnection(host,80,timeout=10)
  connection.request("GET",oneAddress)
  response=connection.getresponse()
  result=response.reason
  resultNum=response.status
   
  if "OK" in result or "Forbidden" in result:
   getaddress="http://"+host+oneAddress+"------"+str(resultNum)+":"+result
   self.ui.text_exist.append(getaddress)
  else:
   self.ui.text_all.append("http://"+host+oneAddress+"------"+str(resultNum)+":"+result)
   
  connection.close()
 except Exception as e:
  print e.message
 self.ui.label_3.setText(u"探测完成")
 self.ui.label_3.colorCount()
  
 def addAddress(self):
 try:
  filePath=os.getcwd()+"address.txt" 
  fileAddress=file(filePath,"a")
  newAddress="
"+str(self.ui.edit_add.text())
  print newAddress
  fileAddress.write(newAddress)
  fileAddress.close()
 except Exception as e:
  print e.message
  
 
if __name__ == "__main__":
 app = QtGui.QApplication(sys.argv)
 myapp = MyForm()
 myapp.show()
 sys.exit(app.exec_())

3.address.txt 扫描地址名单文件,可以通过编辑改文件制定自己的规则,你懂的~~

/admin.php

/admin/

/administrator/

/moderator/

/webadmin/

/adminarea/

/bb-admin/

/adminLogin/

/test/login.jsp

/source/login.php

热心网友 时间:2022-05-10 23:12

这很正常啊,你可以用多线程处理按钮绑定的函数。

热心网友 时间:2022-05-11 00:30

嗯,gui的的Python经常出现这个问题,我都是用多线程解决的。可以参考一下wx.callafter和delayedresult这个两个类,或者重写postevent,通过发送事件消息来解决。

热心网友 时间:2022-05-11 02:04

Tk 还是 wxpython
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
锅炉切圆直径调整 为什么我打开excel后是灰色的? 有没有什么值得推荐的投资港股的QDII基金? - 知乎 win10电脑屏幕亮度调不了怎么办 考焊工证具体怎么操作 广汽传祺是丰田技术吗 广汽传祺与广汽丰田有关系吗 怎样才能让不愿写作业的孩子听话? 上初中不写作业不想学习的孩子应该如何管教? 出生在2020年农历七月十二日的宝宝怎么取名有内涵? 多哈回合谈判各方呼吁 在深圳如何注册一个公司流程有哪些政策 华为称已签50个5G项目,其中28个是欧洲国家,华为的发展模式有哪些值得其他企业学习? 362121开头的身份证是哪里的 362120开头的身份证是哪里的 362201197801254899身份证是哪里的 360902和362201有什么区别 362201是那个区的身份证号开头6位数 口罩杀菌方法 美团外卖小哥的电瓶车都是2000左右的? 跑美团外卖买电瓶车大概要多少钱 随身空间小说 女主姓林 男主姓许 女主重生回到小时候 是个种田文 女主 有没有别的快穿文或者穿书文了?还是男女不限。。。亲,快点哟 求快穿文或者穿书文,不要小说名字,只要文包等可以看全本的小说。越多越好! 女主在液化池出生。如杀人兵器般。不知道疼痛。没有感情。面一直是瘫着的。求小说。 现代t穿越古代gl小说 求小说男主叫南宫景轩的小说 女主是一名高级特工,一次任务失败,穿越到了一个两,三岁的傻子身上,在一个很危险的丛林里,刚好救了男 求小说名 古代短篇言情小说,非穿越,架空文 求小说,女主重生到小时候,和奶奶住在农村,不是父母亲生的,真实身份好像是军人家的孩子,已完结 找一本小说,男主角叫苏是,女主角重生穿到另一个人身上,和男主角是没有血缘关系的表兄妹 深圳工商局网站/请问注册公司需要些什么手续 深圳工商注册流程是怎样的? 第四套人民币四联体价格 第四套人民币四联体大全套收藏价格 13款宝马X3自带导航怎么用 《一拳超人》中的龙套反派们来头有多大? 本菲卡妖人格里马尔多为何如此抢手? 布谷鸟c11麦克风好吗? 格里马尔迪的简历 初级管理会计和中级财务会计有什么区别你知道吗? 管理会计师中级和初级的区别对比 武汉战疫怎么打不开 苹果手机能阻止一个地区的来电吗 ix35与马自达Cx5哪个好? 高手能比较一下现代ix35和马自达cx5吗 现代ix35和起亚智跑和马自达cx5哪个好 大家觉的 马自达cx5 现代ix35哪款更好看呢?我哥买了ix35 我想买cx5 比他差吗? 奇骏马自达cx5现代IX35哪一个好 马自达cx5和现代ix35在整车质量 安全系数 以及油耗和后期保养 哪个更好? CX5比ix35贵5万划算吗?