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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM