Skip to main content
 首页 » 编程设计

Python for 循环无法按预期工作

2025年05月04日12三少

我没有收到任何错误消息,但是 for 循环不会产生与显式语句相同的结果。 kp 是一个类的实例,key0-9 是该类的子元素。我正在尝试做的事情真的有效吗?如果是,那么问题可能与 PyQt4 类的构建方式有关。

这个有效:

def open_kp1(self, kp, le): 
    self.inputStr = le.text() 
    kp.key1.clicked.disconnect() 
    kp.key2.clicked.disconnect() 
    kp.key3.clicked.disconnect() 
    kp.key4.clicked.disconnect() 
    kp.key5.clicked.disconnect() 
    kp.key6.clicked.disconnect() 
    kp.key7.clicked.disconnect() 
    kp.key8.clicked.disconnect() 
    kp.key9.clicked.disconnect() 
    kp.key0.clicked.disconnect() 
    ... more code 

这不是:

def open_kp1(self, kp, le): 
    self.inputStr = le.text() 
    key_list = (kp.key1, kp.key2, kp.key3, kp.key4, kp.key5, kp.key6, kp.key7, 
            kp.key8, kp.key9, kp.key0) 
    for key in key_list: 
        key.clicked.disconnect() 
    ... more code 

请您参考如下方法:

问题似乎是当您在 for 循环中调用 disconnect() 函数时,列表可能会出现一些错误,具体取决于您使用它的范围或一些限制在循环中运行该函数.

调试此问题的一个好方法是运行此代码以查看代码实际上在何处给出错误作为第一个手段,以便您可以在此处提供更多输入以供人们回答。

def open_kp1(self, kp, le): 
    self.inputStr = le.text() 
    key_list = (kp.key1, kp.key2, kp.key3, kp.key4, kp.key5, kp.key6, kp.key7,kp.key8, kp.key9, kp.key0) 
    print(key_list) # print the list to verify the list is indeed intact 
    for key in key_list: 
        print(key) # verify if something indeed is the problem with individual key or if the code ever enters the for loop. 
        key.clicked.disconnect() 
    ... more code 

您需要验证的是列表确实按照您的意图存储了指针。

另外,附带说明一下,在 Debug模式下运行您的应用程序是一种很好的做法,这样您可以获得详细的描述,以防出现问题并在此处上传跟踪。

编辑:拼写