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的装饰器的运用
May 05 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
简单学习Python time模块
Apr 29 Python
python 打印对象的所有属性值的方法
Sep 11 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
Python简易计算器制作方法代码详解
Oct 31 Python
Python 静态方法和类方法实例分析
Nov 21 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
python unichr函数知识点总结
Dec 16 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 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
用来给图片加水印的PHP类
2008/04/09 PHP
php中对2个数组相加的函数
2011/06/24 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
php接口技术实例详解
2016/12/07 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python读写ini文件的方法
2015/05/28 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Python中断多重循环的思路总结
2019/10/04 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
python接口自动化框架实战
2020/12/23 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
国际商务系学生个人的自我评价
2013/11/26 职场文书
视光学专业自荐信
2014/06/24 职场文书
升国旗演讲稿
2014/09/05 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技