PyQt5-按鈕控制元件使用
阿新 • • 發佈:2018-12-04
常見的按鈕類包括: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,QPixmap4 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_())