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中的五种异常处理机制介绍
Sep 02 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
Python版微信红包分配算法
May 04 Python
Python全局变量用法实例分析
Jul 19 Python
Python递归函数定义与用法示例
Jun 02 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
基于python实现KNN分类算法
Apr 23 Python
Python Pillow Image Invert
Jan 22 Python
Python中psutil的介绍与用法
May 02 Python
Python 生成VOC格式的标签实例
Mar 10 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
PHP执行速率优化技巧小结
2008/03/15 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python实现AES加密和解密
2019/03/27 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
求职简历中的自我评价分享
2013/12/08 职场文书
干部现实表现材料
2014/02/13 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
财务会计岗位职责
2015/02/03 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技