Skip to main content
 首页 » 编程设计

python之单发 : SLOT with arguments

2025年05月04日15lonelyxmas

我有一个奇怪的问题。这是我的代码:

def method1(self, arg1, delay=True): 
    """This is a method class""" 
 
    def recall(arg1): 
        self.method1(arg1, delay=False) 
        return 
 
    if delay: 
            print "A: ", arg1, type(arg1) 
            QtCore.QTimer.singleShot(1, self, QtCore.SLOT(recall(int)), arg1) 
            return 
 
    print "B: ", arg1, type(arg1) 

所以我在控制台中得到了这个:

A:  0 <type 'int'> 
B:  <type 'int'> <type 'type'> 

在“B”中你应该得到与在“A”中相同的结果。任何人都知道怎么了?我怎样才能得到 arg1 值 而不是它的类型?这没有任何意义......

PS:我正在尝试这样的事情:http://lists.trolltech.com/qt-interest/2004-08/thread00659-0.html

请您参考如下方法:

传递给SLOT函数的参数必须是一个字符串类型作为参数,而不是直接调用,所以你不能将一个有参数的槽连接到一个没有任何参数的信号上。

您可以改用 lambda 函数:

QtCore.QTimer.singleShot(1, lambda : self.recall(arg1))