您好,登錄后才能下訂單哦!
在之前的文章中,我們介紹了PyQt5和PySide2中主窗口控件MainWindow的使用、窗口控件的4中基礎布局管理。從本篇開始,我們來了解一下PyQt5和PySide2中基礎控件的使用,其中包括:
等圖形界面開發中常用的控件,今天我們來介紹按鈕控件。
文章目錄
一、創建一個按鈕控件
在PyQt5/PySide2中,按鈕控件名為QPushButton(),其位于QtWidgets子模塊之下。在創建按鈕控件之前,我們先來創建一個包含布局層的圖形界面主窗口,作為按鈕控件的容器,代碼如下所示:
# coding:utf-8 from PyQt5 import QtWidgets import sys class ButtonApp(QtWidgets.QMainWindow): def __init__(self): ''' 州的先生 https://zmister.com ''' super().__init__() self.setWindowTitle("Qt For Python按鈕控件 | 州的先生") self.setFixedSize(500,200) # 設置窗口固定大小 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QVBoxLayout() self.main_widget.setLayout(self.main_layout) self.setCentralWidget(self.main_widget) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) gui = ButtonApp() gui.show() sys.exit(app.exec_())
運行上述代碼,我們會得到一個如下圖所示的圖形界面窗口,如下圖所示:
我們使用setFixedSize()方法設置了窗口的固定大小,然后設置了窗口內控件的布局為垂直布局。下面,我們往里面添加按鈕控件。
直接實例化一個帶文本的按鈕控件
我們可以直接實例化一個帶字符串參數的QPushButton()來創建一個按鈕,例如:
self.btn_1 = QtWidgets.QPushButton("按鈕一")
我們將其添加到上面創建的主窗口中,代碼如下所示:
# coding:utf-8 from PyQt5 import QtWidgets import sys class ButtonApp(QtWidgets.QMainWindow): def __init__(self): ''' 州的先生 https://zmister.com ''' super().__init__() self.setWindowTitle("Qt For Python按鈕控件 | 州的先生") self.setFixedSize(500,200) # 設置窗口固定大小 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QVBoxLayout() self.main_widget.setLayout(self.main_layout) self.btn_1 = QtWidgets.QPushButton("按鈕一") self.main_layout.addWidget(self.btn_1) self.setCentralWidget(self.main_widget) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) gui = ButtonApp() gui.show() sys.exit(app.exec_())
運行上述代碼,可以得到一個帶有一個按鈕的主窗口圖形,如下圖所示:
不帶參數創建的按鈕控件
如果我們不帶字符串參數給QPushButton(),創建的就是一個空白的按鈕,代碼如下所示:
from PyQt5 import QtWidgets import sys class ButtonApp(QtWidgets.QMainWindow): def __init__(self): ''' 州的先生 https://zmister.com ''' super().__init__() self.setWindowTitle("Qt For Python按鈕控件 | 州的先生") self.setFixedSize(500, 200) # 設置窗口固定大小 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QVBoxLayout() self.main_widget.setLayout(self.main_layout) self.btn_1 = QtWidgets.QPushButton("按鈕一") self.btn_2 = QtWidgets.QPushButton() self.main_layout.addWidget(self.btn_1) self.main_layout.addWidget(self.btn_2) self.setCentralWidget(self.main_widget) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) gui = ButtonApp() gui.show() sys.exit(app.exec_())
運行上述代碼,我們會得到一個含有兩個按鈕的圖形界面窗口,如下圖所示:
二、設置按鈕控件
設置按鈕文本
按鈕創建之后,我們可以對其進行設置,比如上面創建的空白按鈕,借助其setText()方法,可以設置按鈕上的文本,代碼如下所示:
self.btn_2.setText("按鈕二")
將其添加到第二個按鈕的創建代碼之下,運行新的代碼,可以看到,主窗口中的第二個按鈕上已經有了文字,如下圖所示:
設置按鈕圖標
除了設置文本,我們還能在按鈕中設置一個圖標,使用其setIcon()方法,對其傳入一個QIcon()對象,代碼如下所示:
from PyQt5 import QtWidgets,QtGui import sys class ButtonApp(QtWidgets.QMainWindow): def __init__(self): ''' 州的先生 https://zmister.com ''' super().__init__() self.setWindowTitle("Qt For Python按鈕控件 | 州的先生") self.setFixedSize(500, 200) # 設置窗口固定大小 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QVBoxLayout() self.main_widget.setLayout(self.main_layout) self.btn_1 = QtWidgets.QPushButton("按鈕一") self.btn_2 = QtWidgets.QPushButton() self.btn_2.setText("按鈕二") self.btn_3 = QtWidgets.QPushButton("按鈕三") # 創建按鈕3 icon_img = QtGui.QIcon("./icon.png") # 實例化一個QIcon對象 self.btn_3.setIcon(icon_img) # 設置按鈕的圖標 self.main_layout.addWidget(self.btn_1) self.main_layout.addWidget(self.btn_2) self.main_layout.addWidget(self.btn_3) self.setCentralWidget(self.main_widget) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) gui = ButtonApp() gui.show() sys.exit(app.exec_())
在上面的代碼中,我們創建了按鈕3,然后實例化了一個QIcon()對象,最后調用setIcon()方法,參數為剛剛實例化的QIcon()對象。運行上述代碼,我們可以看到,按鈕3上有一個圖標,如下圖所示:
設置按鈕的狀態
除此之外,我們可以通過setEnabled()方法,設置按鈕的狀態,傳入值為True時,表示按鈕可用,傳入值為False時,表示按鈕禁用,代碼如下所示:
from PyQt5 import QtWidgets,QtGui import sys class ButtonApp(QtWidgets.QMainWindow): def __init__(self): ''' 州的先生 https://zmister.com ''' super().__init__() self.setWindowTitle("Qt For Python按鈕控件 | 州的先生") self.setFixedSize(500, 200) # 設置窗口固定大小 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QVBoxLayout() self.main_widget.setLayout(self.main_layout) self.btn_1 = QtWidgets.QPushButton("按鈕一") self.btn_1.setEnabled(False) self.btn_2 = QtWidgets.QPushButton() self.btn_2.setText("按鈕二") self.btn_3 = QtWidgets.QPushButton("按鈕三") # 創建按鈕3 icon_img = QtGui.QIcon("./icon.png") # 實例化一個QIcon對象 self.btn_3.setIcon(icon_img) # 設置按鈕的圖標 self.main_layout.addWidget(self.btn_1) self.main_layout.addWidget(self.btn_2) self.main_layout.addWidget(self.btn_3) self.setCentralWidget(self.main_widget) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) gui = ButtonApp() gui.show() sys.exit(app.exec_())
運行上述代碼,可以發現主窗口中的按鈕1的顏色不一樣了,因為其已經不能點擊了,如下圖所示:
設置按鈕的大小
如同我們在主窗口中使用setFixedSize()方法設置主窗口的窗口大小,我們可以使用這個方法設置按鈕的固定大小,代碼如下所示:
self.btn_3.setFixedSize(80,80) # 設置按鈕的固定大小
最后運行代碼,我們可以發現,主窗口中的按鈕3的形狀已經變了,如下圖所示:
三、獲取按鈕控件的點擊事件
對于按鈕來說,最常見的還是點擊事件,在PyQt5和PySide2中,已經內置了點擊事件,我們可以直接對其進行調用,代碼如下所示:
from PyQt5 import QtWidgets,QtGui import sys class ButtonApp(QtWidgets.QMainWindow): def __init__(self): ''' 州的先生 https://zmister.com ''' super().__init__() self.setWindowTitle("Qt For Python按鈕控件 | 州的先生") self.setFixedSize(500, 200) # 設置窗口固定大小 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QVBoxLayout() self.main_widget.setLayout(self.main_layout) self.btn_1 = QtWidgets.QPushButton("按鈕一") self.btn_1.setEnabled(False) self.btn_2 = QtWidgets.QPushButton() self.btn_2.setText("按鈕二") self.btn_3 = QtWidgets.QPushButton("按鈕三") # 創建按鈕3 icon_img = QtGui.QIcon("./icon.png") # 實例化一個QIcon對象 self.btn_3.setIcon(icon_img) # 設置按鈕的圖標 self.btn_3.setFixedSize(80,80) # 設置按鈕的固定大小 self.btn_3.clicked.connect(self.clicks) # 連接點擊信號到響應方法 self.main_layout.addWidget(self.btn_1) self.main_layout.addWidget(self.btn_2) self.main_layout.addWidget(self.btn_3) self.setCentralWidget(self.main_widget) # 點擊響應方法 def clicks(self): print("點擊了按鈕") if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) gui = ButtonApp() gui.show() sys.exit(app.exec_())
在上述代碼中,我們新建了一個名為clicks()的方法,里面用來print(),然后使用按鈕3的clicked信號連接到clicks()方法上,最后當我們點擊按鈕3的時候,控制臺就會打印出字符串來,如下動圖所示:
四、最后
除了上面所介紹到的使用方法之外,QPushButton()還有很多高級的用法,這些在下面的文章中會逐步涉及。
以上所述是小編給大家介紹的Python中PyQt5/PySide2的按鈕控件使用實例,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。