2017-03-13 148 views
0

我是PyQT5的新手,我想要有幾個按鈕,並且最後一個按鈕處於「已檢查」狀態。當另一個按鈕被點擊時,前一個按鈕被「取消選中」,而被點擊的按鈕被「檢查」。pyqt5顯示哪個按鈕被點擊

import sys 
from PyQt5.QtWidgets import * 

class Example(QWidget): 
    def __init__(self): 
     super().__init__() 
     self.setGeometry(30, 30, 400, 200) 
     self.initUI() 

    def initUI(self): 
     self.button1 = QPushButton(self) 
     self.button1.setGeometry(40, 40, 100, 50) 
     self.button1.setText("Button 1") 

     self.button2 = QPushButton(self) 
     self.button2.setGeometry(150, 40, 100, 50) 
     self.button2.setText("Button 2") 

     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

回答

-1
  1. 請通過setCheckable(真),可檢查按鈕
  2. 添加按鈕到QButtonGroup(),其餘的自動排序:

    class Example(QWidget): 
        def __init__(self): 
         super().__init__() 
         self.setGeometry(30, 30, 400, 200) 
         self.initUI() 
    
        def initUI(self): 
         self.button1 = QPushButton(self) 
         self.button1.setGeometry(40, 40, 100, 50) 
         self.button1.setText("Button 1") 
         self.button1.setCheckable(True) 
         self.button2 = QPushButton(self) 
         self.button2.setGeometry(150, 40, 100, 50) 
         self.button2.setText("Button 2") 
         self.button2.setCheckable(True) 
    
         self.my_button_group = QButtonGroup() 
         self.my_button_group.addButton(self.button1) 
         self.my_button_group.addButton(self.button2) 
    
         self.show() 
    
1

大廈斷您的代碼,您可以將button1button2添加到QButtonGroup,並將exclusive屬性設置爲True

class Example(QWidget): 
    def __init__(self): 
     super().__init__() 
     self.setGeometry(30, 30, 400, 200) 
     self.initUI() 

    def initUI(self): 
     self.button1 = QPushButton(self) 
     self.button1.setGeometry(40, 40, 100, 50) 
     self.button1.setText("Button 1") 

     self.button2 = QPushButton(self) 
     self.button2.setGeometry(150, 40, 100, 50) 
     self.button2.setText("Button 2") 

     self.btn_grp = QButtonGroup() 
     self.btn_grp.setExclusive(True) 
     self.btn_grp.addButton(self.button1) 
     self.btn_grp.addButton(self.button2) 

     self.btn_grp.buttonClicked.connect(self.on_click) 

     self.show() 

    def on_click(self, btn): 
     pass # do something with the button clicked 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

在這裏,我還連接一個空槽到信號QButtonGroup.buttonClicked,每當從該組的按鈕被點擊,其被髮射。

要找出哪個按鈕是當前選中的按鈕,您可以調用方法QButtonGroup.checkedButton()QButtonGroup.checkedId()。前者將返回一個QButton對象,後者將返回索引int,對應於將按鈕添加到組的順序。