2017-11-18 10 views
0

以下のコードを実行すると、以下のようになります。なぜx 'x'ではないがブール値になるのだろうか?これは、lambdaで呼び出された関数に渡される最初の引数に対してのみ発生します。 clickedはそれが確認されたかどうかを示すブール値を渡すためPyQt5ボタンのlambda変数がブール値になる

偽 Y /ホーム/私/モデル/ some_file

from PyQt5.QtWidgets import QPushButton 
modelpath = '/home/me/model' 
filelist = os.listdir(modelpath) 
x = 'x' 
y = 'y' 
def HelloWidget(QWidget): 
    def __init__(self): 
     for file in filelist: 
      button = QPushButton(file) 
      button.clicked.connect(lambda x=x,y=y,file=file: self.myfunction(x,y,file) 

    def myfunction(self,x,y,file): 
     print(x) 
     print(y) 
     print(file) 
+0

私の答えをテストし、それがうまくいけば、正しいとマークすることを忘れないでください。リンク:https://stackoverflow.com/tour – eyllanesc

答えて

0

問題が発生しています。適切なのは、その引数を使用するパラメータを使用することです:

button.clicked.connect(lambda checked, x=x,y=y,file=file: self.myfunction(x,y,file)) 
+0

それは正しいと思います。私はちょうどここでも答えを見つけました。 https://stackoverflow.com/questions/18836291/lambda-function-returning-false早速お返事をいただきありがとうございます! – user1657862

関連する問題