1. 程式人生 > >PyQt5-按鈕控制元件使用

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