如何将PyQt信号连接到外部函数
如何将一个文件中的pyqt按钮信号连接到另一个python文件中的函数?我尝试了各种各样的东西,但似乎没有任何工作。 这是第一个文件:如何将PyQt信号连接到外部函数
from PyQt4 import QtGui
from PyQt4.QtGui import QMainWindow
from MainUIFile import Ui_Main
from pythonfile import myOutsideFunction
class MainWindow(QMainWindow,Ui_file):
def __init__(self):
QMainWindow.__init__(self)
self.setupUi(self)
self.btn.clicked.connect(myOutsideFunction())
第二个文件是由第一被呼叫:
def myOutsideFunction(self):
# Do some stuff here
我怎么会去这样做呢?
您当前正在拨打myOutsideFunction
并将结果传递给connect
函数,该函数需要callable作为参数。
从myOutsideFunction
在连接调用
self.btn.clicked.connect(myOutsideFunction)
什么是连接到一个函数的代码以外的重要性删除括号?你能不能做这样的事情:
def myOutsideFunction(a,b,c,d):
#process variables/objects a,b,c,d as you wish
return answer
from PyQt4 import QtGui
from PyQt4.QtGui import QMainWindow
from MainUIFile import Ui_Main
from pythonfile import myOutsideFunction
class MainWindow(QMainWindow,Ui_file):
def __init__(self):
QMainWindow.__init__(self)
self.setupUi(self)
self.btn.clicked.connect(self.pressed_the_button())
#initialize your variables/objects for your outside function if need be
def pressed_the_button(self):
answer_from_outside_function = myOutsideFunction(self.a,self.b,self.c,self.d)
# run whatever you need to here...
这不是一个解决方案 - 它与问题中的代码具有完全相同的问题。 – ekhumoro
@ekhumoro你怎么看?我们没有迹象表明实际的失败是什么。问题是如何将按钮连接到外部功能。这是做到这一点的一种方法。据推测,人们可以将其他变量/对象传递到外部函数中,这可以通过在__init__或代码中的其他位置定义它们来完成。我编辑了我的答案,以便更具描述性。 – user2070870
问题中的代码不起作用,因为它试图将可调用对象的返回值传递给'connect',而不是可调用对象本身。你的代码犯了完全一样的错误。 [其他答案](http://*.com/a/40027367/984421)已经涵盖了这一点。 – ekhumoro
我实际上已经做了.connect(myOutsideFunction)没有括号之前我没有任何运气发布这个。感谢您的答复。 – Collaptic
您能否显示您正在接收的错误? – user3419537
@ user3419537。请注意'myOutsideFunction'有一个'self'参数。如果这是故意的,它可能会解释其他错误是什么...... – ekhumoro