2017-03-27 17 views
0

フォームに3つのボタンがあります。例えば、5%ボタンをクリックすると5%が表示されます。しかし、何らかの理由ですべてのボタンが印刷されるのは60%です。PyQt複数のボタンが同じ値を出力する

そして、なぜ私は本当に理解できないのですか?

私のコードは以下の通りです。

class ThirdWindow(QWidget, Ui_Form3): 
    def __init__(self): 
     super(ThirdWindow, self).__init__() 
     self.dbu = DatabaseHandling.DatabaseUtility() 
     self.msl = None 

     # Show UI on screen + resize window 
     self.setupUi(self) 
     self.picIndicator.setPixmap(QPixmap("M:\QtProjects\\Resources\\138691.png")) 
     self.setFixedSize(350, 480) 

     # Define what should happen on button click 
     self.btnQuit.clicked.connect(lambda: self.close()) 
     self.btnSixtyPercent.clicked.connect(lambda: self.check_clicked()) 
     self.btnTenPercent.clicked.connect(lambda: self.check_clicked()) 
     self.btnFivePercent.clicked.connect(lambda: self.check_clicked()) 


    # TODO: Create a window that ask's for the spot it's specific color 
    '''def indication(self): 
     d = DialogOne() 
     d.exec_()''' 

    def check_clicked(self): 
     if self.btnSixtyPercent.text() == "60": 
      print("60%") 
     elif self.btnFivePercent.text() == "5": 
      print("5%") 
     elif self.btnTenPercent.text() == "10": 
      print("10%") 

Form

答えて

1

あなたがスロットに信号を接続すると、信号が生成されたとき、あなたはsender() .ITではありません使用することができ、信号を発するオブジェクトで作業したい場合、それは、実行lambda関数を使用するために必要です。

self.btnQuit.clicked.connect(self.close) 
    self.btnSixtyPercent.clicked.connect(self.check_clicked) 
    self.btnTenPercent.clicked.connect(self.check_clicked) 
    self.btnFivePercent.clicked.connect(self.check_clicked) 


def check_clicked(self): 
     print("{}%".format(self.sender().text() 

完全なコード:

class ThirdWindow(QWidget, Ui_Form3): 
    def __init__(self): 
     super(ThirdWindow, self).__init__() 
     self.dbu = DatabaseHandling.DatabaseUtility() 
     self.msl = None 

     # Show UI on screen + resize window 
     self.setupUi(self) 
     self.picIndicator.setPixmap(QPixmap("M:\QtProjects\\Resources\\138691.png")) 
     self.setFixedSize(350, 480) 

     # Define what should happen on button click 
     self.btnQuit.clicked.connect(self.close) 
     self.btnSixtyPercent.clicked.connect(self.check_clicked) 
     self.btnTenPercent.clicked.connect(self.check_clicked) 
     self.btnFivePercent.clicked.connect(self.check_clicked) 


    # TODO: Create a window that ask's for the spot it's specific color 
    '''def indication(self): 
     d = DialogOne() 
     d.exec_()''' 

    def check_clicked(self): 
     print("{}%".format(self.sender().text())) 
+0

は以下の可能?:私は、ボタンのテキストを削除し、にisCheckedを使用して押されたボタンをチェックしたい場合は、私にその簡単な例を示すことができますか? – stickfigure4

+0

もちろん、 'sender()'にはオブジェクト(その場合はQCheckBox)があり、その関数を使うことができます。一方、私の答えはあなたの疑問に答えたと思います。もしそうなら、それを正しいものとしてマークしてください。 – eyllanesc

+0

このケースでは、ボタンの情報を得ることができるstateChangedというシグナルを使用する必要があります。 – eyllanesc

関連する問題