1. 程式人生 > 其它 >PyQt5入門(七)常用控制元件

PyQt5入門(七)常用控制元件

技術標籤:PyQt5pyqt5桌面應用

按鈕控制元件(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點不了。

敲著敲著感覺失去了曾經敲程式碼的樂趣,哎,感覺以前敲程式碼像頂著癮似的,原來的自己敲著程式碼唱著歌,非常的輕鬆,可以做到心中無女人,一坐坐一天,現在不行了,過一小會就像去玩,失去了興趣就失去了源動力!!!為什麼呢?

單選按鈕控制元件QRatioButton