[英]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
,将button1
和button2
添加到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
,与将按钮添加到组中的顺序相对应。
将按钮添加到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.