Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5从另一个Py文件添加列表项_Python_Pyqt5_Mitmproxy - Fatal编程技术网

Python PyQt5从另一个Py文件添加列表项

Python PyQt5从另一个Py文件添加列表项,python,pyqt5,mitmproxy,Python,Pyqt5,Mitmproxy,单击PyQt5 Ui中的按钮时,iam将启动mitmproxy。当代理启动时,我尝试使用代理中的数据更改listWidget main.py 导入系统 从PyQt5导入QtWidgets 从PyQt5.QtWidgets导入QApplication,QMainWindow 从主窗口导入Ui\u主窗口 类MainWindow(QtWidgets.QMainWindow,Ui_MainWindow): 定义初始化(self,*args,obj=None,**kwargs): 超级(主窗口,自我)。\

单击PyQt5 Ui中的按钮时,iam将启动mitmproxy。当代理启动时,我尝试使用代理中的数据更改listWidget

main.py

导入系统 从PyQt5导入QtWidgets 从PyQt5.QtWidgets导入QApplication,QMainWindow 从主窗口导入Ui\u主窗口 类MainWindow(QtWidgets.QMainWindow,Ui_MainWindow): 定义初始化(self,*args,obj=None,**kwargs): 超级(主窗口,自我)。\uuuuu初始化(*args,**kwargs) self.setupUi(self) self.button.clicked.connect(self.Start) def启动(自): x=线程.Thread(目标=self.StartMITM) x、 开始() def StartMITM(自身): 系统(“mitmweb-s mitmproxy.py-q——无web开放浏览器”) 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) win=主窗口() win.show() sys.exit(app.exec_())
mitmproxy.py
-这是错误部分

从mitmproxy导入http
从主导入主窗口
def响应(流量):
MainWindow.listWidget.addItem(flow.request.pretty\uURL)

我可以从另一个文件连接到小部件吗?

它有两个独立的进程:GUI和mitmproxy脚本。通信这两个过程并不意味着导入模块,因为您将创建另一个小部件,也不应该通过类访问对象(我建议您查看基本的python注释)

在这种情况下,解决方案是使用一些进程间通信(IPC),在这种情况下,您可以使用:

main.py

从functools导入缓存的\u属性
从PyQt5导入QtCore、QtRemoteObjects和QtWidgets
类桥(QtCore.QObject):
messageChanged=QtCore.pyqtSignal(str)
@QtCore.pyqtSlot(str)
def添加_消息(自我,消息):
self.messageChanged.emit(消息)
MitmwebManager类(QtCore.QObject):
logChanged=QtCore.pyqtSignal(str)
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
#self.process.setProcessChannelMode(QtCore.QProcess.MergedChannels)
self.process.readyReadStandardOutput.connect(self.handle\u日志)
self.process.setProgram(“mitmweb”)
@缓存的不动产
def过程(自我):
返回QtCore.QProcess()
def start(自身、参数):
self.process.setArguments(参数)
self.process.start()文件
def停止(自):
self.process.kill()
def句柄_日志(自身):
data=self.process.readAllStandardOutput()
codec=QtCore.QTextCodec.codeforname(“UTF-8”)
message=codec.toUnicode(数据)
self.logChanged.emit(消息)
类MainWindow(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
self.button=qtwidts.QPushButton(“开始”,可检查=True)
self.listwidget=qtwidts.QListWidget()
self.logview=qtwidts.QPlainTextEdit(readOnly=True)
central_widget=qtwidts.QWidget()
self.setCentralWidget(中心窗口小部件)
lay=qtwidts.QGridLayout(中心小部件)
lay.addWidget(self.button,0,0,1,2)
lay.addWidget(self.listwidget,1,0)
lay.addWidget(self.logview,1,1)
self.register\u node=QtRemoteObjects.QRemoteObjectRegistryHost(
QtCore.QUrl(“本地:注册表”)
)
self.source_node=QtRemoteObjects.QRemoteObjectHost(
QtCore.QUrl(“本地:副本”)、QtCore.QUrl(“本地:注册表”)
)
self.source\u node.enableRemoting(self.bridge,“bridge”)
self.button.toggled.connect(self.handle\u toggled)
self.mitmweb.logChanged.connect(self.handle\u log\u changed)
self.bridge.messageChanged.connect(self.handle\u message\u changed)
自我调整大小(640480)
@缓存的不动产
def mitmweb(自我):
返回MitmwebManager()
@缓存的不动产
def桥接器(自):
返回桥()
def手柄已切换(自检、已检查):
如果选中:
self.mitmweb.start([“-s”、“script.py”、“无web开放浏览器”])
self.button.setText(“停止”)
其他:
self.mitmweb.stop()
self.button.setText(“开始”)
def句柄_日志_已更改(自身、消息):
self.logview.insertPlainText(消息)
def关闭事件(自身、事件):
super().closeEvent(事件)
self.mitmweb.stop()
def句柄消息已更改(自身、消息):
item=QtWidgets.QListWidgetItem(消息)
self.listwidget.addItem(项目)
def main():
app=QtWidgets.QApplication([])
视图=主窗口()
view.show()
app.exec()
如果名称=“\uuuuu main\uuuuuuuu”:
main()
script.py

从mitmproxy导入http
从PyQt5导入QtCore、QtRemoteObjects
类桥(QtCore.QObject):
def uuu init uuu(self、bridge、parent=None):
super()。\uuuu init\uuuu(父级)
self._message=“”
自成桥=桥
self.bridge.initialized.connect(self.handle\u initialized)
@财产
def桥接器(自):
返回自我
@财产
def消息(自我):
返回自我信息
def发送消息(自我,消息):
self.\u message=消息
@QtCore.pyqtSlot()
def句柄_已初始化(自):
self.bridge.add_消息(self._消息)
QtCore.QTimer.singleShot(0,QtCore.QCoreApplication.quit)
def发送_qt(消息):
qt_app=QtCore.QCoreApplication([])
replica_node=qtmoteobjects.QRemoteObjectNode(QtCore.QUrl(“本地:注册表”))
副本\网桥=副本\节点。获取动态(“网桥”)
桥=桥(复制桥)
桥接器。发送消息(消息)
qt_app.exec_uz()
def响应(流量):
send_qt(flow.request.pretty_url)

它有两个独立的进程:GUI和mitmproxy脚本。而通信这两个过程并不意味着导入模块,因为您将