繁体   English   中英

pyqt5显示单击了哪个按钮

[英]pyqt5 show which button was clicked

我是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_())

在代码的基础上,可以将exclusive属性设置为True ,将button1button2添加到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.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.buttonClicked发出。

要找出哪个按钮是当前选中的按钮,可以调用方法QButtonGroup.checkedButton()QButtonGroup.checkedId() 前者将返回一个QButton对象,后者将返回一个索引int ,与将按钮添加到组中的顺序相对应。

  1. 通过setCheckable(True)使按钮可检查
  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() 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM