2016-08-28 9 views
2

エラーメッセージは表示されませんが、forループは明示的な文と同じ結果を生成しません。 kpはクラスのインスタンスであり、key0-9はそのクラスの子要素です。私が実際にやろうとしていることは、実際に働くべきでしょうか?もしそうなら、おそらくPyQt4クラスがどのように構築されているのかが問題です。Python forループが正常に動作しない

これは動作します:

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 
+0

が、私は違いが –

+0

まあ、違いがある見るかわかりません.key? '、2番目のバージョンは古い参照を使います。 – dhke

+0

@dhkeそれは恐ろしいデザインです: 'disconnect'メソッドは' clicked'オブジェクトにあります。とにかく、これらのオブジェクトが何であるかを知らないと、何も言えません。しかし、99%のケースではそれはまったく同じで、OPの問題は何か他のもの、xyの問題です。 – freakish

答えて

-1

はあなたがforループで切断()関数を呼び出している間に、いくつかの誤りがある可能性がありますリストを使用しているスコープに応じて、またはループ内で関数を実行しないようにするために何らかの制約があります。

これをデバッグするには、このコードを実行して、最初の手段としてコードが実際にどこにエラーを表示しているかを確認します。

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 

あなたが確認する必要があるのは、実際にリストが意図したとおりにポインタを格納していることです。

また、デバッグモードでアプリを実行して、何かが横向きになった場合に冗長な説明を取得し、ここにトレースをアップロードすることをお勧めします。

編集:(切断 `によってトリガ何かが)` `KPを変更する場合:あなたはタプルではなく、リストを使用以外のスペル

関連する問題