PyQt5 GUI编程——QPushButton

QPushButton类继承自QAbstractButton类,其形状是长方形,文本标题或图标可以显示在长方形上。它也是一种命令按钮,可以单击该按钮执行一些命令,或者响应一些事件。
QPushButton类中的常用方法如下图所示:
PyQt5 GUI编程——QPushButton_第1张图片
QPushButton类的常用信号如下图所示:
PyQt5 GUI编程——QPushButton_第2张图片
同样,可以为QPushButton设置快捷键。通过按钮的名字就可以为QPushButton设置快捷键,比如名字为“&Download”的按钮,它的快捷键就是“Alt+D”。设置快捷键的方式相当简单,只需按钮的名字里要有该字母,并且在该字母前面加上&即可,一般是设置按钮的首字母。如果只想显示&,那么需要像转义字符一样使用“&&”。
应用的实例如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Form(QDialog):
	def __init__(self,parent=None):
		super().__init__(parent)
		layout = QVBoxLayout()
		
		self.btn1 = QPushButton("Button1")
		self.btn1.setCheckable(True)
		#使按钮每次点击都可以改变按钮的状态
		self.btn1.toggle()
		#通过lambda的方式传递额外的参数btn1
		self.btn1.clicked.connect(lambda:self.whichbtn(self.btn1))    
		self.btn1.clicked.connect(self.btnstate)
		layout.addWidget(self.btn1)
		
		self.btn2 = QPushButton('image')
		#设置按钮图标
		self.btn2.setIcon(QIcon(QPixmap("./images/python.png")))
		self.btn2.clicked.connect(lambda:self.whichbtn(self.btn2))
		layout.addWidget(self.btn2)
		self.setLayout(layout)
		
		self.btn3 = QPushButton("Disabled")
		#设置按钮为不可用,点击不发射信号
		self.btn3.setEnabled(False)
		layout.addWidget(self.btn3)
		
		self.btn4 = QPushButton("&Download")
		#设置按钮的默认状态
		self.btn4.setDefault(True)
		self.btn4.clicked.connect(lambda:self.whichbtn(self.btn4))
		layout.addWidget(self.btn4)
		self.setWindowTitle("Button demo")
	
	def btnstate(self):
		if self.btn1.isChecked():
			print("button pressed")
		else:
			print("button released")
			
	def whichbtn(self,btn):
		print("clicked button is " + btn.text())
		
if __name__ == '__main__':
	app = QApplication(sys.argv)
	win = Form()
	win.show()
	sys.exit(app.exec_())

PyQt5 GUI编程——QPushButton_第3张图片
第1个按钮,通过toggle()函数来切换按钮状态,当点击这个按钮时,将clicked信号发送给槽函数btnstate(),通过btn.isChecked来获得按钮的状态。还可以通过lambda的方式来传递额外的参数。
第2个按钮,上面比其它的按钮多显示了一个图标,由于写博客的时候,图片丢失,所以上面并没有体现。使用setIcon()方法接收一个QPixmap对象的图像文件作为输入参数。
第3个按钮,使用setEnabled()方法来禁用该按钮。
第4个按钮,设置了快捷键,可通过“Alt+D”来点击该按钮。

你可能感兴趣的:(PyQt5 GUI编程——QPushButton)