PySide2值QPushButton

1.簡介

QPushButton是界面中常見的按鈕控件,提供按鈕的功能。我們在使用時,對QPushButton關注的重點在於顯示的樣式和點擊後執行的功能,下面就這兩點進行說明。

2.樣式

2.1 QPushButton的樣式主要分邊框、背景及字體

import sys
from PySide2.QtWidgets import QPushButton, QApplication

if __name__ == "__main__":
	app = QApplication(sys.argv)
	button = QPushButton()                     # 定義一個按鈕
	button.setText("button")                   # 設置按鈕顯示的文字
	button.setStyleSheet("background: rgba(2,231,226,0.20);border: 3px solid blue;\
	border-radius: 25px;font-family: Microsoft YaHei;font-size: 24pt;color: #FFFFFF;")   # 設置樣式 	
	button.show()
	
	sys.exit(app.exec_())                  

這裏使用setStyleSheet來設置樣式,樣式屬性分很多種,每種用分號隔開。下面就設置項進行說明

background: rgba(2,231,226,0.20);    # 設置背景色及背景透明度,0.20爲透明度
border: 3px solid blue;              # 設置邊框寬度爲3px, 邊框線爲實線,邊框色爲#02E7E2
border-radius: 25px;                 # 設置邊框圓角爲25px
font-family: Microsoft YaHei;        # 顯示字體爲微軟雅黑
font-size: 24pt;                     # 顯示字體大小24pt
color: #FFFFFF;                      # 顯示字體顏色爲白色

字體使用微軟雅黑,這種字體是Windows系統自帶的,而其他如幼圓、仿宋等字體在系統不一定存在。這在設置字體時需要注意。

2.2 QPushButton對鼠標動作的反應

import sys
from PySide2.QtWidgets import QPushButton, QApplication

if __name__ == "__main__":
	app = QApplication(sys.argv)
	button = QPushButton()                     # 定義一個按鈕
	button.setText("button")                   # 設置按鈕顯示的文字
	button.setStyleSheet('''
	QPushButton{background: rgba(2,231,226,0.20);
				border: 3px solid blue;
				border-radius: 25px;
				font-family: Microsoft YaHei;
				font-size: 24pt;
				color: #FFFFFF;}
	QPushButton:pressed{background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                    stop: 0 #dadbde, stop: 1 #f6f7fa);}''')   # 設置樣式 	
	button.show()
	
	sys.exit(app.exec_())

這裏對setStyleSheet的內容進行了擴充,''' '''內QPushButton{}是對button的設置,與2.1相同;不同之處在QPushButton:pressed{},這裏是鼠標點擊按鈕後,按鈕的樣式,使用了一個線性漸變的背景。

qlineargradient(x1: 0,    
                y1: 0, 
                x2: 0, 
                y2: 1,
                stop: 0 #dadbde, 
                stop: 1 #f6f7fa)
#(x1, y1) 漸變起始點
#(x2, y2) 漸變結束點
#這裏的起始點和結束點不是真的位置點,而是邏輯點,這裏(0,0)和(0,1) 是一個垂直方向,
#表示漸變從上往下;若設置(0,0)和(1,1)就從左上角到右下角的漸變
#stop設置漸變色,這裏設置一個起始點的顏色stop: 0 #dadbde和終點的顏色stop: 1 #f6f7fa
#如果還想在中間加顏色,可以設置stop: 0.5 white或stop: 0.61 blue

3.按鈕點擊

利用qt的信號和槽功能可以實現按鈕點擊後,執行相應的動作。信號即我們點擊按鈕後,按鈕發出的信號,就像我們扇某人一耳光,被扇的人會發出哭的信號一樣;槽即接收到信號後,執行的函數,這裏還是以前面扇耳光的例子,如果我們扇的是一個孩子,那麼孩子的爸媽接收到孩子被打的信號,爸媽會做什麼,爸媽可能回送我們一耳光,也可能報警,爸媽做的事就是槽。

這個過程用代碼實現

import sys
from PySide2.QtWidgets import QPushButton, QApplication
# 增加一個簡單的類
class testSlot():
	def __init__(self):
		pass
	def test(self):
		print("test print")

if __name__ == "__main__":
	app = QApplication(sys.argv)
	button = QPushButton()                     # 定義一個按鈕
	button.setText("button")                   # 設置按鈕顯示的文字
	button.setStyleSheet('''
	QPushButton{background: rgba(2,231,226,0.20);
				border: 3px solid blue;
				border-radius: 25px;
				font-family: Microsoft YaHei;
				font-size: 24pt;
				color: #FFFFFF;}
	QPushButton:pressed{background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                        stop: 0 #dadbde, stop: 1 #f6f7fa);}''')   # 設置樣式 
	testslot = testSlot()     # 創建一個類實例
    # 使用button的clicked信號連接testslot的test()函數
    # button被點擊後發出clicked信號,testslot接收到此信號後執行test()
	button.clicked.connect(testslot.test)	
	button.show()
	sys.exit(app.exec_())

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章