pyqt点击按钮增加控件 (pyqt怎么设置push button图标)

pyqt5列表中添加按钮,pyqt5判断pushbutton是否点击

QAbstractButton简介

QAbstractButton类为一个抽象类,不能实例化,必须有其他按钮类来继承它以实现不同的功能和表现形式。QPushButton, QCheckButton, QRadioButto,QToolButton等常见按钮都继承自QAbstractButton。

QAbstractButton提供一个按钮所需的最基本的状态和信号。

QAbstractButton常用方法:

  • isEnable(); 按钮是否在使能状态, 提示按钮是否可以被用户点击;
  • isChecked();按钮是否处于标记状态;
  • isCheckAble(); 按钮是否可标记;
  • isDown(); 按钮是否已经按下;
  • setAutoRepeat(); 设置按钮是否在用户长按时可以自动重复执行。

QAbstractButton常用信号:

  • pressed();鼠标左键在按钮上按下时触发该信号;
  • released();鼠标左键释放时触发该信号;
  • clicked(); 鼠标左键在按钮上按下然后释放,或快捷键被释放时触发该信号;
  • toggled();按钮的标记状态发生改变时触发该信号。

QPushButton简介

QPushButton是PyQt中常用最常用的基本控件之一,按下(或者单击)一个QPushButton按钮给APP发送某个命令,让APP执行某个操作或者相应一些信息。一个PyQt 实现的APP中典型的按钮如确定,取消,关闭,是,否,帮助等等,一般都由QPushButton来实现。

QPushButton常用方法:

  • setText();设置按钮的显示文本;
  • setIcon();设置按钮上的图标;
  • setEnabled();设置按钮是否可用,设置为False时,按钮不可用;
  • setCheckable();设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态;
  • text();返回按钮的显示文本;
  • toggle();在按钮状态之间进行切换;
  • isChecked();返回按钮的选中状态。

QPushButton类继承关系:

pyqt5列表中添加按钮,pyqt5判断pushbutton是否点击

测试QPushButton

qpushbutton.py演示了怎样使用QPushButton来控制*放播**一个GIF动画图片,基本功能包括:

  • *放播**/停止;
  • 逐帧前进/后退;
  • 到第一帧/最后一帧。
importsys
importos
fromPyQt5importQtCore,QtGui,QtWidgets
fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QLabel,QPushButton,QStyle)
fromPyQt5.QtGuiimport(QIcon,QMovie)

classDemoPushButton(QMainWindow):
def__init__(self,parent=None):
super(DemoPushButton,self).__init__(parent)

#设置窗口标题
self.setWindowTitle("实战PyQt5:QPushButtonDemo!")
#设置窗口大小
self.resize(400,420)

#图像尺寸
img_width=176*2
img_height=180*2

#*放播**状态记录变量
self.is_playing=False
self.is_pause=False
self.total_frame=0
self.cur_frame=0

self.movie=QMovie(os.path.dirname(__file__)+"/use-python.gif")
self.movie.setScaledSize(QtCore.QSize(img_width,img_height))
self.movie.setCacheMode(QMovie.CacheAll)#支持回卷
self.total_frame=self.movie.frameCount()#保存总帧数
label=QLabel(self)
label.move(20,10)
label.setFixedSize(img_width,img_height)
label.setMovie(self.movie)
self.movie.jumpToFrame(0)

self.btn_play=QPushButton(self)
self.btn_play.setGeometry(20,380,60,24)
self.btn_play.clicked.connect(self.play)
self.setPlayButtonState()

btn_first=QPushButton(self)
btn_first.setIcon(QApplication.style().standardIcon(QStyle.SP_MediaSkipBackward))
btn_first.setText("到头")
btn_first.setToolTip("到第一帧")
btn_first.setGeometry(90,380,60,24)
btn_first.clicked.connect(self.firstFrame)

btn_last=QPushButton(self)
btn_last.setIcon(QApplication.style().standardIcon(QStyle.SP_MediaSkipForward))
btn_last.setText("到尾")
btn_last.setToolTip("到最后一帧")
btn_last.setGeometry(160,380,60,24)
btn_last.clicked.connect(self.lastFrame)

btn_prev=QPushButton(self)
btn_prev.setIcon(QApplication.style().standardIcon(QStyle.SP_MediaSeekBackward))
btn_prev.setText("前帧")
btn_prev.setToolTip("到前一帧")
btn_prev.setGeometry(230,380,60,24)
btn_prev.clicked.connect(self.prevFrame)

btn_next=QPushButton(self)
btn_next.setIcon(QApplication.style().standardIcon(QStyle.SP_MediaSeekForward))
btn_next.setText("后帧")
btn_next.setToolTip("到后一帧")
btn_next.setGeometry(300,380,60,24)
btn_next.clicked.connect(self.nextFrame)

#修改*放播**按钮的状态
defsetPlayButtonState(self):
ifself.is_playing:
self.btn_play.setIcon(QApplication.style().standardIcon(QStyle.SP_MediaPlay))
self.btn_play.setText("停止")
self.btn_play.setToolTip("点击按钮停止*放播**")
else:
self.btn_play.setIcon(QApplication.style().standardIcon(QStyle.SP_MediaStop))
self.btn_play.setText("*放播**")
self.btn_play.setToolTip("点击按钮开始*放播**")

#*放播**按钮的槽函数
defplay(self):
ifself.is_playing:
self.movie.stop()
self.movie.jumpToFrame(0)#回到第一帧
self.is_playing=False
else:
self.movie.start()
self.is_playing=True
self.setPlayButtonState()

#到设定的当前帧
deftoFrame(self):
ifself.is_playing:
self.movie.stop()
self.is_playing=False
self.setPlayButtonState()
self.movie.jumpToFrame(self.cur_frame)

#到第一帧
deffirstFrame(self):
self.cur_frame=0
self.toFrame()

#到最后一帧
deflastFrame(self):
self.cur_frame=self.total_frame-1
self.toFrame()

#到前一帧
defprevFrame(self):
ifself.cur_frame<=0:
self.cur_frame=self.total_frame-1
else:
self.cur_frame=self.cur_frame-1
self.toFrame()

#到后一帧
defnextFrame(self):
ifself.cur_frame>=self.total_frame-1:
self.cur_frame=0
else:
self.cur_frame=self.cur_frame+1
self.toFrame()

if__name__=='__main__':
app=QApplication(sys.argv)
window=DemoPushButton()
window.show()
sys.exit(app*ex.e**c())

运行结果如下图所示:

pyqt5列表中添加按钮,pyqt5判断pushbutton是否点击

测试QPushButton

本文知识点

  • 获得系统PyQt内置图标的方法;
  • 使用PyQt内置图标为QPushButton按钮设置图标;
  • 信号和槽函数的使用;
  • QMovie对GIF动画播出的基本操作函数;
  • QMovie支持回卷须设置setCacheMode(QMovie.CacheAll)。

喜欢本文内容就收藏,点赞,评论,关注和转发。