簡體   English   中英

Python for循環無法按預期工作

[英]Python for loop doesn't work as expected

我沒有收到任何錯誤消息,但是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

您需要驗證的是,列表確實按照您的意圖存儲了指針。

另外,順便提一句,在調試模式下運行應用程序是一個好習慣,這樣一來,如果出現某些情況,您將獲得詳細的說明,並在此處上傳跟蹤信息。

編輯:拼寫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM