PyQt5入門(七)常用控制元件
阿新 • • 發佈:2021-02-06
按鈕控制元件(QpushButton)
QAbstractButton(所有按鈕控制元件的父類)
QPushButton(普通按鈕)
AToolButton(工具條按鈕)
QRadioButton(單選框按鈕)
QCheckBox(複選框按鈕)
程式碼:
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class QPushButtonDemo(QDialog): def __init__(self): super(QPushButtonDemo, self).__init__() self.initUI() def initUI(self): self.setWindowTitle('QPushButton Demo') self.resize(350,200) layout=QVBoxLayout() #垂直佈局 self.btn1=QPushButton('第一個按鈕') self.btn1.setText('First Button1') #下面兩句配合使用,功能類似於單選框按鈕QCheckBox self.btn1.setCheckable(True) self.btn1.toggle() #按一下就按下去了,再按一下才能抬起 #btn1一個訊號對應兩個槽函式 self.btn1.clicked.connect(self.buttonState) #先繫結誰系統就先呼叫誰 self.btn1.clicked.connect(lambda :self.whichButton(self.btn1)) layout.addWidget(self.btn1) #在文字前面顯示影象 self.btn2=QPushButton('影象按鈕') self.btn2.setIcon(QIcon(QPixmap('casually input'))) self.btn2.clicked.connect(lambda :self.whichButton(self.btn2)) layout.addWidget(self.btn2) self.btn3=QPushButton('不可用的按鈕') self.btn3.setEnabled(False) layout.addWidget(self.btn3) self.btn4=QPushButton('&MyButton') #設定了熱鍵M/m self.btn4.setDefault(True) #如果沒有任何按鈕被選中,那麼按回車就是按了這個按鈕 self.btn4.clicked.connect(lambda :self.whichButton(self.btn4)) layout.addWidget(self.btn4) self.setLayout(layout) ''' 注意下面的方法是兩個引數,如果用傳統的訊號與槽連線方式的話,只會將按鈕物件本身傳入,那樣的話第二個引數就沒有傳入值了 所以要用lambda表示式,當前物件直接呼叫這個函式,傳入的值就對應第二個引數了 ''' def whichButton(self,btn): #self.sender() #通過此方法可得到是哪個按鈕被按下,或者可用此方法中的傳參方法 print('被單擊的按鈕是<'+btn.text()+'>') def buttonState(self): if self.btn1.isChecked(): print('按鈕1已經被選中') else: print('按鈕1未被選中') if __name__=='__main__': app=QApplication(sys.argv) main=QPushButtonDemo() main.show() sys.exit(app.exec_())
執行結果:
開始啥都不要選,先按一個一個回車,果然按鈕4反應了,然後連按兩下按鈕1,再用熱鍵Alt+m,再點按鈕2,按鈕3點不了。
敲著敲著感覺失去了曾經敲程式碼的樂趣,哎,感覺以前敲程式碼像頂著癮似的,原來的自己敲著程式碼唱著歌,非常的輕鬆,可以做到心中無女人,一坐坐一天,現在不行了,過一小會就像去玩,失去了興趣就失去了源動力!!!為什麼呢?