Python-PyQt5-圖形可視化界面(3)--按鈕--Qpushbutton

Ps:水平有限,歡迎建議和挑錯

PyQt5中按鈕是一個QpushButton,可以提供一個點擊的按鈕來觸發(fā)摸一個事件。

按鈕可以顯示圖片或者文字。

創(chuàng)建按鈕

我們在第一節(jié)的mainwindow上創(chuàng)建一個按鈕,代碼如下:


from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):

    def setupUi(self, mainWindow):

        mainWindow.setObjectName("mainWindow")

        mainWindow.setWindowModality(QtCore.Qt.WindowModal)

        mainWindow.resize(624, 511)

        self.centralWidget = QtWidgets.QWidget(mainWindow)

        self.centralWidget.setObjectName("centralWidget")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)

        self.pushButton.setGeometry(QtCore.QRect(240, 240, 75, 23))

        self.pushButton.setObjectName("pushButton")

        mainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(mainWindow)

        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):

        _translate = QtCore.QCoreApplication.translate

        mainWindow.setWindowTitle('您好')

        mainWindow.setWindowIcon(QIcon('logo.png'))

if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_mainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())

image

這里只是單單創(chuàng)建一個按鈕,按鈕點擊并沒有任何作用。

同樣按鈕也可以進行各種設(shè)置。

image

除了上圖幾種方法,再介紹另外幾種方法。

(1)設(shè)置字體大小,加粗,字型

font = QtGui.QFont()

font.setFamily('微軟雅黑')

 font.setBold(True)

font.setPointSize(13)

font.setWeight(75)

self.pushButton.setFont(font)

這個方法是通用的。幾乎PyQt其他組件也能用。


image

(2)設(shè)置圖片

icon = QtGui.QIcon()

icon.addPixmap(QtGui.QPixmap("logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

self.pushButton.setIcon(icon)

self.pushButton.setIconSize(QtCore.QSize(50, 80))

self.pushButton.setAutoRepeatDelay(200)
image

無圖代碼

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):

    def setupUi(self, mainWindow):

        mainWindow.setObjectName("mainWindow")

        mainWindow.setWindowModality(QtCore.Qt.WindowModal)

        mainWindow.resize(624, 511)

        self.centralWidget = QtWidgets.QWidget(mainWindow)

        self.centralWidget.setObjectName("centralWidget")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)

        self.pushButton.setGeometry(QtCore.QRect(240, 240,200, 53))

        self.pushButton.setObjectName("pushButton")

        self.pushButton.setText("一顆數(shù)據(jù)小白菜")

        # self.pushButton.setFlat(True)

        self.pushButton.setStyleSheet("background-color: rgb(164, 185, 255);"

"border-color: rgb(170, 150, 163);"

"font: 75 12pt \"Arial Narrow\";"

"color: rgb(126, 255, 46);")

        mainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(mainWindow)

        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):

        _translate = QtCore.QCoreApplication.translate

        mainWindow.setWindowTitle('您好')

        mainWindow.setWindowIcon(QIcon('logo.png'))

if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_mainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())
image

有圖代碼

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):

    def setupUi(self, mainWindow):

        mainWindow.setObjectName("mainWindow")

        mainWindow.setWindowModality(QtCore.Qt.WindowModal)

        mainWindow.resize(624, 511)

        self.centralWidget = QtWidgets.QWidget(mainWindow)

        self.centralWidget.setObjectName("centralWidget")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)

        self.pushButton.setGeometry(QtCore.QRect(240, 240,200, 53))

        self.pushButton.setObjectName("pushButton")

        self.pushButton.setText("一顆數(shù)據(jù)小白菜")

        # self.pushButton.setFlat(True)

        self.pushButton.setStyleSheet("background-color: rgb(164, 185, 255);"

"border-color: rgb(170, 150, 163);"

"font: 75 12pt \"Arial Narrow\";"

"color: rgb(126, 255, 46);")

        icon = QtGui.QIcon()

        icon.addPixmap(QtGui.QPixmap("logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

        self.pushButton.setIcon(icon)

        self.pushButton.setIconSize(QtCore.QSize(50, 80))

        self.pushButton.setAutoRepeatDelay(200)

        mainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(mainWindow)

        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):

        _translate = QtCore.QCoreApplication.translate

        mainWindow.setWindowTitle('您好')

        mainWindow.setWindowIcon(QIcon('logo.png'))

if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_mainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())
image

綁定按鈕事件

我們給按鈕綁定觸發(fā)時間,用:

pushbutton.clicked.connect()

(1)退出事件

我們給按鈕綁定退出事件:

self.pushButton.clicked.connect(mainWindow.close)

image

最終代碼如下:

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):

    def setupUi(self, mainWindow):

        mainWindow.setObjectName("mainWindow")

        mainWindow.setWindowModality(QtCore.Qt.WindowModal)

        mainWindow.resize(624, 511)

        self.centralWidget = QtWidgets.QWidget(mainWindow)

        self.centralWidget.setObjectName("centralWidget")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)

        self.pushButton.setGeometry(QtCore.QRect(240, 240,200, 53))

        self.pushButton.setObjectName("pushButton")

        self.pushButton.setText("一顆數(shù)據(jù)小白菜")

        # self.pushButton.setFlat(True)

        self.pushButton.setStyleSheet("background-color: rgb(164, 185, 255);"

"border-color: rgb(170, 150, 163);"

"font: 75 12pt \"Arial Narrow\";"

"color: rgb(126, 255, 46);")

        icon = QtGui.QIcon()

        icon.addPixmap(QtGui.QPixmap("logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

        self.pushButton.setIcon(icon)

        self.pushButton.setIconSize(QtCore.QSize(50, 80))

        self.pushButton.setAutoRepeatDelay(200)

        mainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(mainWindow)

        self.pushButton.clicked.connect(mainWindow.close)

        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):

        _translate = QtCore.QCoreApplication.translate

        mainWindow.setWindowTitle('您好')

        mainWindow.setWindowIcon(QIcon('logo.png'))

if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_mainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())

(2)自定義事件

我們把第一二三節(jié)的內(nèi)容結(jié)合起來,在主窗口上創(chuàng)建一個Qlabel,Qpushbutton。

image
from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):

    def setupUi(self, mainWindow):

        mainWindow.setObjectName("mainWindow")

        mainWindow.setWindowModality(QtCore.Qt.WindowModal)

        mainWindow.resize(624, 511)

        self.centralWidget = QtWidgets.QWidget(mainWindow)

        self.centralWidget.setObjectName("centralWidget")

        self.label = QtWidgets.QLabel(self.centralWidget)

        self.label.setGeometry(QtCore.QRect(60, 60, 191, 61))

        self.label.setText("一顆數(shù)據(jù)小白菜")

        self.label.setObjectName("label")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)

        self.pushButton.setGeometry(QtCore.QRect(240, 240,200, 53))

        self.pushButton.setObjectName("pushButton")

        self.pushButton.setText("一顆數(shù)據(jù)小白菜")

        # self.pushButton.setFlat(True)

        self.pushButton.setStyleSheet("background-color: rgb(164, 185, 255);"

"border-color: rgb(170, 150, 163);"

"font: 75 12pt \"Arial Narrow\";"

"color: rgb(126, 255, 46);")

        icon = QtGui.QIcon()

        icon.addPixmap(QtGui.QPixmap("logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

        self.pushButton.setIcon(icon)

        self.pushButton.setIconSize(QtCore.QSize(50, 80))

        self.pushButton.setAutoRepeatDelay(200)

        mainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(mainWindow)

        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):

        _translate = QtCore.QCoreApplication.translate

        mainWindow.setWindowTitle('您好')

        mainWindow.setWindowIcon(QIcon('logo.png'))

if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_mainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())

1、事件1

我們現(xiàn)在自定義事件,按按鈕使得Qlabel的內(nèi)容發(fā)生變化:

image

事件函數(shù):

def setText_qlabel(self):

    self.label.setText('我要變成大白菜了')

事件綁定:

**self.pushButton.clicked.connect(self.setText_qlabel)**

定義事件就是 定義一個函數(shù),再綁定給按鈕。

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):

    def setupUi(self, mainWindow):

        mainWindow.setObjectName("mainWindow")

        mainWindow.setWindowModality(QtCore.Qt.WindowModal)

        mainWindow.resize(624, 511)

        self.centralWidget = QtWidgets.QWidget(mainWindow)

        self.centralWidget.setObjectName("centralWidget")

        self.label = QtWidgets.QLabel(self.centralWidget)

        self.label.setGeometry(QtCore.QRect(60, 60, 191, 61))

        self.label.setText("一顆數(shù)據(jù)小白菜")

        self.label.setObjectName("label")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)

        self.pushButton.setGeometry(QtCore.QRect(240, 240,200, 53))

        self.pushButton.setObjectName("pushButton")

        self.pushButton.setText("一顆數(shù)據(jù)小白菜")

        self.pushButton.setFlat(True)

        self.pushButton.setStyleSheet("background-color: rgb(164, 185, 255);"

"border-color: rgb(170, 150, 163);"

"font: 75 12pt \"Arial Narrow\";"

"color: rgb(126, 255, 46);")

        icon = QtGui.QIcon()

        icon.addPixmap(QtGui.QPixmap("logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

        self.pushButton.setIcon(icon)

        self.pushButton.setIconSize(QtCore.QSize(50, 80))

        self.pushButton.setAutoRepeatDelay(200)

        mainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(mainWindow)

**        self.pushButton.clicked.connect(self.setText_qlabel)**

        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):

        _translate = QtCore.QCoreApplication.translate

        mainWindow.setWindowTitle('您好')

        mainWindow.setWindowIcon(QIcon('logo.png'))

**    def setText_qlabel(self):**

**          self.label.setText('我要變成大白菜了')**

if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    mainWindow = QtWidgets.QMainWindow()

    ui = Ui_mainWindow()

    ui.setupUi(mainWindow)

    mainWindow.show()

    sys.exit(app.exec_())

2、事件2

我們定義事件二,讓qlabel發(fā)生更多變化

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon

class Ui_mainWindow(object):


    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.setWindowModality(QtCore.Qt.WindowModal)
        mainWindow.resize(624, 511)
        self.centralWidget = QtWidgets.QWidget(mainWindow)
        self.centralWidget.setObjectName("centralWidget")

        self.label = QtWidgets.QLabel(self.centralWidget)
        self.label.setGeometry(QtCore.QRect(60, 60, 191, 61))
        self.label.setText("一顆數(shù)據(jù)小白菜")
        self.label.setObjectName("label")

        self.pushButton = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(240, 240,200, 53))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.setText("一顆數(shù)據(jù)小白菜")
        self.pushButton.setFlat(True)
        self.pushButton.setStyleSheet("background-color: rgb(164, 185, 255);"
"border-color: rgb(170, 150, 163);"
"font: 75 12pt \"Arial Narrow\";"
"color: rgb(126, 255, 46);")

        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("logo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton.setIcon(icon)
        self.pushButton.setIconSize(QtCore.QSize(50, 80))
        self.pushButton.setAutoRepeatDelay(200)

        mainWindow.setCentralWidget(self.centralWidget)
        self.retranslateUi(mainWindow)

        self.pushButton.clicked.connect(self.setText_qlabel)
        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):
        _translate = QtCore.QCoreApplication.translate
        mainWindow.setWindowTitle('您好')
        mainWindow.setWindowIcon(QIcon('logo.png'))


    def setText_qlabel(self):
        self.label.setStyleSheet('background-color: rgb(255, 251, 240)')
        font= QtGui.QFont()
        font.setFamily('微軟雅黑')
        font.setBold(True)
        font.setPointSize(13)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setText("<font color=%s>%s</font>" %('#7EC7FF', "歡迎您")) 


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = QtWidgets.QMainWindow()
    ui = Ui_mainWindow()
    ui.setupUi(mainWindow)
    mainWindow.show()
    sys.exit(app.exec_())
4.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容