PyQt5-按钮控件使用

常见的按钮类包括:QPushButton、QToolButton、QRadioButton、QCheckBox、他们都继承自QAbstractButton类;

QAbstractButton提供的状态:

提供的信号:

1、QPushButton

常用方法

例如:

 1 #QAbstractButton -QPushButton的使用
 2 from PyQt5.QtWidgets import  QPushButton,QVBoxLayout,QWidget,QApplication
 3 from PyQt5.QtGui import QIcon,QPixmap
 4 
 5 import sys
 6 
 7 class WindowClass(QWidget):
 8     def __init__(self,parent=None):
 9         super(WindowClass, self).__init__(parent)
10         self.btn_1=QPushButton("Btn_1")
11         self.btn_2=QPushButton("Btn_2")
12         self.btn_3=QPushButton("&DownLoad")#快捷建设置,ALT+大写首字母
13         self.btn_4 = QPushButton("Btn_4")
14 
15         self.btn_1.setCheckable(True)#设置已经被点击
16         self.btn_1.toggle()#切换按钮状态
17         self.btn_1.clicked.connect(self.btnState)
18         self.btn_1.clicked.connect(lambda :self.wichBtn(self.btn_1))
19 
20         #self.btn_2.setIcon(QIcon('./image/add_16px_1084515_easyicon.net.ico'))#按钮按钮
21         self.btn_2.setIcon(QIcon(QPixmap('./image/baidu.png')))
22         self.btn_2.setEnabled(False)#设置不可用状态
23         self.btn_2.clicked.connect(lambda :self.wichBtn(self.btn_2))
24 
25         self.btn_3.setDefault(True)#设置该按钮式默认状态的
26         self.btn_3.clicked.connect(lambda :self.wichBtn(self.btn_3))
27 
28         self.btn_4.clicked.connect(lambda :self.wichBtn(self.btn_4))
29 
30         self.resize(400,300)
31         layout=QVBoxLayout()
32         layout.addWidget(self.btn_1)
33         layout.addWidget(self.btn_2)
34         layout.addWidget(self.btn_3)
35         layout.addWidget(self.btn_4)
36 
37         self.setLayout(layout)
38 
39     def btnState(self):
40         if self.btn_1.isChecked():
41             print("Btn_1被单击")
42         else:
43             print("Btn_1未被单击")
44     def wichBtn(self,btn):
45         print("点击的按钮是:" , btn.text())
46 
47 if __name__=="__main__":
48     app=QApplication(sys.argv)
49     win=WindowClass()
50     win.show()
51     sys.exit(app.exec_())

 

2、QRadioButton

它也继承自QAbstracButton 类,提供了一组可供选择的按钮和文本标签,用户可以选择一项,标签用户显示对应的文本信息;

可以切换on或者off,即checked或者unchecked;多个QRadioButton是一个按钮组合,如果多个独占的按钮组合,需要放在QGrouopBox或者QButtonGroup中;

当切换on或者off时,会发送toggled信号,绑定这个信号,在按钮状态发生改变时,触发相应的行为;

常用方法如下:

clicked信号在每次单击按钮时都会发射该信号, 一般只有状态改变触发,则toggled信号更适合这种状态的监控;

例如:

 1 #QRadioButton的使用
 2 from PyQt5.QtWidgets import  QPushButton,QVBoxLayout,QWidget,QApplication,QRadioButton,QHBoxLayout
 3 from PyQt5.QtGui import QIcon,QPixmap
 4 
 5 import sys
 6 
 7 class WindowClass(QWidget):
 8     def __init__(self,parent=None):
 9         super(WindowClass, self).__init__(parent)
10         layout=QHBoxLayout()
11         self.radio_1=QRadioButton("Btn_1")
12         self.radio_2=QRadioButton("Btn_2")
13 
14         layout.addWidget(self.radio_1)
15         layout.addWidget(self.radio_2)
16         self.radio_2.setChecked(True)
17         self.radio_2.toggled.connect(self.btnState)
18         self.setLayout(layout)
19 
20     def btnState(self):
21         if self.radio_2.isChecked()==True:
22             print("radio_2被选中")
23         else:
24             print("radio_2取消选中")
25 
26 
27 if __name__=="__main__":
28     app=QApplication(sys.argv)
29     win=WindowClass()
30     win.show()
31     sys.exit(app.exec_())

3、QCheckBox的使用

例如:

 1 #QCheckBox的使用
 2 from PyQt5.QtWidgets import  QPushButton,QVBoxLayout,QWidget,QApplication,QRadioButton,QHBoxLayout,QCheckBox,QGroupBox
 3 from PyQt5.QtGui import QIcon,QPixmap
 4 from PyQt5.QtCore import  Qt
 5 
 6 import sys
 7 
 8 class WindowClass(QWidget):
 9     def __init__(self,parent=None):
10         super(WindowClass, self).__init__(parent)
11         layout=QHBoxLayout()
12         self.group=QGroupBox("checkBoxes")
13         self.group.setFlat(True)
14 
15         self.checkbox_1=QCheckBox("&checkBox_1")
16         self.checkbox_1.setChecked(True)
17         self.checkbox_1.toggled.connect(self.btnState)
18 
19         self.checkbox_2= QCheckBox("&checkBox_2")
20         self.checkbox_2.setChecked(False)
21 
22         self.checkbox_3 = QCheckBox("&checkBox_3")
23         self.checkbox_3.setCheckState(Qt.PartiallyChecked)
24 
25         layout.addWidget(self.checkbox_1)
26         layout.addWidget(self.checkbox_2)
27         layout.addWidget(self.checkbox_3)
28         self.group.setLayout(layout)
29 
30         mainLayout=QVBoxLayout()
31         mainLayout.addWidget(self.group)
32 
33         self.setLayout(mainLayout)
34 
35     def btnState(self):
36         print("状态:",self.checkbox_1.isChecked(),self.checkbox_1.checkState())
37         if self.checkbox_1.isChecked()==True:
38             print("checkbox_1被选中")
39         else:
40             print("checkbox_2取消选中")
41 
42 
43 if __name__=="__main__":
44     app=QApplication(sys.argv)
45     win=WindowClass()
46     win.show()
47     sys.exit(app.exec_())

猜你喜欢

转载自www.cnblogs.com/ygzhaof/p/10059540.html