Python中PyQt5/PySide2的按钮控件使用实例
作者:州先生 发布时间:2023-03-04 16:27:44
在之前的文章中,我们介绍了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_())
运行上述代码,我们会得到一个如下图所示的图形界面窗口,如下图所示:
我们使用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_())
运行上述代码,可以得到一个带有一个按钮的主窗口图形,如下图所示:
不带参数创建的按钮控件
如果我们不带字符串参数给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_())
运行上述代码,我们会得到一个含有两个按钮的图形界面窗口,如下图所示:
二、设置按钮控件
设置按钮文本
按钮创建之后,我们可以对其进行设置,比如上面创建的空白按钮,借助其setText()方法,可以设置按钮上的文本,代码如下所示:
self.btn_2.setText("按钮二")
将其添加到第二个按钮的创建代码之下,运行新的代码,可以看到,主窗口中的第二个按钮上已经有了文字,如下图所示:
设置按钮图标
除了设置文本,我们还能在按钮中设置一个图标,使用其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上有一个图标,如下图所示:
设置按钮的状态
除此之外,我们可以通过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的颜色不一样了,因为其已经不能点击了,如下图所示:
设置按钮的大小
如同我们在主窗口中使用setFixedSize()方法设置主窗口的窗口大小,我们可以使用这个方法设置按钮的固定大小,代码如下所示:
self.btn_3.setFixedSize(80,80) # 设置按钮的固定大小
最后运行代码,我们可以发现,主窗口中的按钮3的形状已经变了,如下图所示:
三、获取按钮控件的点击事件
对于按钮来说,最常见的还是点击事件,在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的时候,控制台就会打印出字符串来,如下动图所示:
四、最后
除了上面所介绍到的使用方法之外,QPushButton()还有很多高级的用法,这些在下面的文章中会逐步涉及。
以上所述是小编给大家介绍的Python中PyQt5/PySide2的按钮控件使用实例,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
来源:https://zmister.com/archives/1090.html


猜你喜欢
- GoroutineGoroutine 是 Golang 提供的一种轻量级线程,我们通常称之为「协程」,相比较线程,创建一个协程的成本是很低的
- 在 CodeBit.cn 的论坛中,有人问 Javascript 中如何截取小数位并实现四舍五入,这是一个很常用的 js 技术,帖子中也有网
- 本文实例为大家分享了python之pygame模块实现飞机大战的具体代码,供大家参考,具体内容如下Python飞机大战步骤:1.数据区2.主
- 不同的色彩空间中对图片的色彩体现有很大不同#色彩空间的相互转换:最常见的是HSV与RGB,YUV与RGB的相互转换#常见色彩空间有:#RGB
- 一般情况下,访问或设置剪贴板,IE 只需使用 window.clipboardData 的 getData 或 setData 方法即可。M
- 最近小爬一直思忖着如何将以前写的一些半自动化程序转为全自动化,这其中就涉及到SAP的打开和登录过程。我们都知道,SAP原生的&ldq
- 如图所示,有一个test文件夹,里面有3个子文件夹,每个子文件夹中有若干图片文件#场景1 读取一个文件夹中所有文件,存入到一个list表中#
- CSS Sprites技术不新鲜,早在2005年 CSS Zengarden 的园主 Dave Shea 就在 ALA
- 1、CSV(1)写csv文件import csvdef writecsv(path,data): with open(path,
- 什么是pyc文件pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有
- 微信小程序可谓是9月21号之后最火的一个名词了,一经出现真是轰炸了整个开发人员,当然很多App开发人员有了一个担心,微信小程序的到来会不会让
- 1.字符串大小写转换string.title() #将字符串中所有单词的首字母以大写形式显示string.upper() #将字符串中所有字
- 现在向大家介绍mysql命令行下,从数据库的建立到表数据的删除全过程,希望对大家有所帮助。登陆mysql打cmd命令终端,如果已经添加了my
- python3字符串操作 x = 'abc' y = 'defgh' print(x + y)
- Jupyter平台默认开发的字体为宋体,在高分屏下视觉效果差在 C:\User\用户名\.jupyter\custom下面的custom.c
- 前言在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两
- 今天下午,低一度博客受到攻击了,出现了大约一个小时的访问异常。庆幸的是,这帮无耻歹徒没能成功获取我的Access数据库,而只是象征性地给我注
- 前言大家好,我们今天来爬取c站的高校名单,把其高校名单,成员和内容数获取下来,不过,我们发现这个网站比我们平时多了一个验证,下面看看我是怎么
- 对于React,Vue构建的单页面应用老说,SEO是一个众所周知的问题。服务端渲染(SSR-server Side Render)是目前看来
- 本文实例讲述了Python开发的实用计算器。分享给大家供大家参考,具体如下:实现功能:图形界面PyQt,输入框,+,—,*,/ ;乘方 ,开