Python中PyQt5/PySide2的按钮控件使用实例


Posted in Python onAugust 17, 2019

在之前的文章中,我们介绍了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_())

运行上述代码,我们会得到一个如下图所示的图形界面窗口,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

我们使用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_())

运行上述代码,可以得到一个带有一个按钮的主窗口图形,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

不带参数创建的按钮控件

如果我们不带字符串参数给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_())

运行上述代码,我们会得到一个含有两个按钮的图形界面窗口,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

二、设置按钮控件

设置按钮文本

按钮创建之后,我们可以对其进行设置,比如上面创建的空白按钮,借助其setText()方法,可以设置按钮上的文本,代码如下所示:

self.btn_2.setText("按钮二")

将其添加到第二个按钮的创建代码之下,运行新的代码,可以看到,主窗口中的第二个按钮上已经有了文字,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

设置按钮图标

除了设置文本,我们还能在按钮中设置一个图标,使用其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上有一个图标,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

设置按钮的状态

除此之外,我们可以通过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的颜色不一样了,因为其已经不能点击了,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

设置按钮的大小

如同我们在主窗口中使用setFixedSize()方法设置主窗口的窗口大小,我们可以使用这个方法设置按钮的固定大小,代码如下所示:

self.btn_3.setFixedSize(80,80) # 设置按钮的固定大小

最后运行代码,我们可以发现,主窗口中的按钮3的形状已经变了,如下图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

三、获取按钮控件的点击事件

对于按钮来说,最常见的还是点击事件,在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的时候,控制台就会打印出字符串来,如下动图所示:

Python中PyQt5/PySide2的按钮控件使用实例 

四、最后

除了上面所介绍到的使用方法之外,QPushButton()还有很多高级的用法,这些在下面的文章中会逐步涉及。

以上所述是小编给大家介绍的Python中PyQt5/PySide2的按钮控件使用实例,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python操作xml文件详细介绍
Jun 09 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
基于Python实现的百度贴吧网络爬虫实例
Apr 17 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
Python必须了解的35个关键词
Jul 16 Python
手残删除python之后的补救方法
Jun 26 Python
画pytorch模型图,以及参数计算的方法
Aug 17 #Python
pytorch 共享参数的示例
Aug 17 #Python
Pytorch卷积层手动初始化权值的实例
Aug 17 #Python
pytorch自定义初始化权重的方法
Aug 17 #Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 #Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 #Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 #Python
You might like
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
js实现简单放大镜效果
2020/03/07 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python障碍式期权定价公式
2019/07/19 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
python SOCKET编程基础入门
2021/02/27 Python
怎样客观的做好自我评价
2013/12/28 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
转变工作作风心得体会
2016/01/23 职场文书