pyqt5中常用的按钮类控件有QPushButton、QRadioButton、QCheckBox、QToolButton等。这些按钮类的基类都是QAbstracButton类。所以这些类有部分方法是相同的。

通用的方法有

方法 描述
isDown() 判断按钮是否按下
isChecked() 返回布尔值,判断按钮是否标记,该方法与setChecAble()联合使用
isEnabled() 设置按钮是否禁用。禁用时按钮为灰色,参数为布尔值。注意这个单词的写法,网上有些教程错误的少写了一个d
isCheckAble() 设置按钮是否可标记,参数为布尔值
setAutoRepeat() 参数为True时,该按钮可以长时间被按钮,连续执行槽函数

一、QpushButton

 1 import sys,os
 2 from PyQt5.QtWidgets import QWidget,QPushButton,QApplication,QVBoxLayout,QHBoxLayout
 3 from PyQt5.QtGui import QIcon,QPixmap
 4
 5 path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 6
 7 class MyWindow(QWidget):
 8
 9     def __init__(self):
10         super().__init__()
11         self.initUI()
12
13     def initUI(self):
14         self.setWindowTitle('PushButton示例')
15         self.setWindowIcon(QIcon(r'%s\4.图标素材\chuan.ico' % path))
16         self.setGeometry(600,300,450,300)
17
18         self.btn1 = QPushButton('按键一')
19         self.btn1.setCheckable(True) #默认为False。这是为True时,按钮会保持按下状态
20         self.btn1.clicked.connect(lambda:self.btnstate(self.btn1))
21
22         self.btn2 = QPushButton('按键二')
23         self.btn2.setIcon(QIcon(QPixmap(r'%s\4.图标素材\python.jpg' % path)))  #设置按钮的图标
24         self.btn2.clicked.connect(lambda:self.btnstate(self.btn2))
25
26         self.btn3 = QPushButton('Disabled')
27         self.btn3.clicked.connect(lambda:self.btnsetdisabled(self.btn2))
28         self.btn3.isEnabled()
29         self.btn3.clicked.connect(lambda:self.btnstate(self.btn3))
30
31         self.btn4 = QPushButton('按键四')
32         self.btn4.setCheckable(True)
33         self.btn4.clicked.connect(lambda:self.btnstate(self.btn4))
34
35         vbx = QVBoxLayout()
36         vbx.addWidget(self.btn1)
37         vbx.addWidget(self.btn2)
38         vbx.addWidget(self.btn3)
39         vbx.addWidget(self.btn4)
40
41         hbx = QHBoxLayout()
42         hbx.addStretch(1)
43         hbx.addLayout(vbx)
44         hbx.addStretch(1)
45         self.setLayout(hbx)
46
47     def btnstate(self,btn):
48         if btn.isChecked():
49             print(btn.text()+'被按下')
50         else:
51             print(btn.text()+'没有按下')
52
53     def btnsetdisabled(self,btn):
54         if btn.isEnabled():
55             btn.setEnabled(False)
56         else:
57             btn.setEnabled(True)
58
59
60 if __name__ == '__main__':
61     app = QApplication(sys.argv)
62     win = MyWindow()
63     win.show()
64     sys.exit(app.exec_())

QPushButton示例

效果图如下:

具体效果不再详述。

二、QRadIoButton

QRadIoButton是一中单选按钮,只有checked和unchecked两个状态,信号也是再切换单选按钮(开/关)时发射的。单选常用于“多选一”的场景,也就是说它默认是独占的。对于继承同一个弗雷QWidget的多个单选按钮,他们属于同一个按钮组合,用户最多只能选择其中一个。如果在同一个父组件下要用到多个独占的按钮组合,则需要将他们放在QGroupBox或QButtonBox中。而在实际中,一般只有状态改变时才会响应信号,所以常用于状态监控。

 1 import sys,os
 2 from PyQt5.QtWidgets import QWidget,QRadioButton,QApplication,QVBoxLayout,QHBoxLayout,QGroupBox,QLabel,QLineEdit
 3 from PyQt5.QtGui import QIcon,QPixmap
 4
 5 path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 6
 7 class MyWindow(QWidget):
 8
 9     def __init__(self):
10         super().__init__()
11         self.initUI()
12
13     def initUI(self):
14         self.setWindowTitle('QRadioButton示例')
15         self.setWindowIcon(QIcon(r'%s\4.图标素材\chuan.ico' % path))
16         self.setGeometry(600,300,400,150)
17
18         rbtn1 = QRadioButton('男',self)
19         rbtn1.move(20,20)
20         rbtn1.toggled.connect(lambda:self.getsex(rbtn1))
21         rbtn2 = QRadioButton('女',self)
22         rbtn2.move(20,50)
23         rbtn2.toggled.connect(lambda: self.getsex(rbtn2))
24
25         lbl = QLabel('您的性别是:',self)
26         lbl.move(150,20)
27         self.lineEdit = QLineEdit(self)
28         self.lineEdit.move(150,50)
29
30     def getsex(self,rbtn):
31         sender = self.sender()
32         self.lineEdit.setText(sender.text())
33
34
35 if __name__ == '__main__':
36     app = QApplication(sys.argv)
37     win = MyWindow()
38     win.show()
39     sys.exit(app.exec_())

QRadioButton示例

效果图如下:

self.sender()返回的是信号发射到对象,text()则返回文本信息

三、QCheckBox

QCheckBox即带有标签的复选框,它同样具有两种状态的控件:开和关。复选框通常用于表示应用程序可以启用或禁用的功能,和单选框不同之处在于可以“多选”

 1 import sys,os
 2 from PyQt5.QtWidgets import QWidget,QCheckBox,QApplication,QGridLayout,QLabel,QLineEdit
 3 from PyQt5.QtGui import QIcon
 4
 5 path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 6 Items=[]
 7
 8 class MyWindow(QWidget):
 9
10     def __init__(self):
11         super().__init__()
12         self.initUI()
13
14     def initUI(self):
15         self.setWindowTitle('QCheckBox示例')
16         self.setWindowIcon(QIcon(r'%s\4.图标素材\chuan.ico' % path))
17         self.setGeometry(600,300,350,300)
18
19         cb1 = QCheckBox('挖掘机')
20         cb2 = QCheckBox('平地机')
21         cb3 = QCheckBox('装载机')
22         cb4 = QCheckBox('振动碾')
23         lb1 = QLabel('选择是:')
24         self.lineEdit = QLineEdit()
25
26         grid = QGridLayout()
27         grid.addWidget(cb1,1,1,1,1)
28         grid.addWidget(cb2,1,2,1,1)
29         grid.addWidget(cb3,2,1,1,1)
30         grid.addWidget(cb4,2,2,1,1)
31         grid.addWidget(lb1,3,1,1,1)
32         grid.addWidget(self.lineEdit,3,2,1,1)
33         self.setLayout(grid)
34
35         cb1.stateChanged.connect(lambda:self.chooseItem(cb1))
36         cb2.stateChanged.connect(lambda: self.chooseItem(cb2))
37         cb3.stateChanged.connect(lambda: self.chooseItem(cb3))
38         cb4.stateChanged.connect(lambda: self.chooseItem(cb4))
39
40     def chooseItem(self,cb):
41         if cb.isChecked():
42             if cb.text() not in Items:
43                Items.append(cb.text())
44             shop_cart = ','.join(Items)
45             self.lineEdit.setText(shop_cart)
46         else:
47             if cb.text() in Items:
48                Items.remove(cb.text())
49             shop_cart = ','.join(Items)
50             self.lineEdit.setText(shop_cart)
51
52 if __name__ == '__main__':
53     app = QApplication(sys.argv)
54     win = MyWindow()
55     win.show()
56     sys.exit(app.exec_())

QCheckBox示例

效果图如下:

转载于:https://www.cnblogs.com/chuanxiaopang/p/10547908.html

八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox相关推荐

  1. PyQt5快速开发与实战 4.5 按钮类控件 and 4.6 QComboBox(下拉列表框)

    PyQt5快速开发与实战 文章目录 PyQt5快速开发与实战 4. 第4章 PyQt5 基本窗口控件 4.5 按钮类控件 4.5.1 QAbstractButton 4.5.2 QPushButton ...

  2. Android开发笔记(三十七)按钮类控件

    Button与ImageButton Button是文本按钮(继承自TextView),而ImageButton是图像按钮(继承自ImageView).两者之间的区别在于: 1.Button即可显示文 ...

  3. Chip类控件(Chip、InputChip、ChoiceChip、FilterChip、ActionChip)

    RawChip Material风格标签控件,此控件是其他标签控件的基类,通常情况下,不会直接创建此控件,而是使用如下控件: Chip InputChip ChoiceChip FilterChip ...

  4. Flutter 标签类控件大全Chip

    老孟导读:Flutter内置了多个标签类控件,但本质上它们都是同一个控件,只不过是属性参数不同而已,在学习的过程中可以将其放在放在一起学习,方便记忆. RawChip Material风格标签控件,此 ...

  5. PyQt5学习--基本窗口控件--QButton类控件

    参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 PyQt5按钮的基类是QAbstractButton,为抽象类,不能实例化. 常见的按钮类有:QPushButton.QToo ...

  6. 从零开始学Pyqt5之【控件介绍】(15):绘图类控件QPainter、QPen、QBrush、QPixMap

    从零开始学Pyqt5之[控件介绍](15):绘图类控件QPainter.QPen.QBrush.QPixMap QPainter控件 QPainter控件的作用 QPainter控件常用方法 QPai ...

  7. PyQt5:常用控件

    0.概述 控件是开发GUI程序必不可少的组成部分.就像盖房子用到的砖和瓦一样.PyQt5中的控件很多,本文介绍接种常用控件,其他控件的应用大同小异. QAbstractButton类为抽象类,不能实例 ...

  8. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...

  9. VC MFC按钮(CButton)控件

    VC MFC按钮(CButton)控件 2012年11月11日 19:15   作者:TCEO   分类:技术文章   浏览:4,298   按钮控件 1如何在按钮控件上显示图片 首先确定你要显示在按 ...

最新文章

  1. python描述器 触发事件_Python面向对象 - 描述器
  2. 后香农时代,华为提出10大数学挑战问题
  3. 搞测量的要时刻保护自己哦!
  4. Node.js与Express4安装与配置
  5. ZooKeeper编程
  6. Intellij导入子项目时,maven列表子项目灰色不可用---解决方法
  7. python rm 条件_删除文件 (rm)
  8. element 密码输入框用*显示_用 Java 实现天天酷跑,这个真的有点强了
  9. “云网管” -云上构建网络自动化体系
  10. cf修改游戏客户端是什么意思_微信codm什么意思 微信codm 小飞机 落!什么意思[多图]-游戏攻略...
  11. 理解 Delphi 的类(十) - 深入方法[17] - 提前声明
  12. Microsoft宣布.NET Core支持计划
  13. Xshell代理访问外网或者公司的内网
  14. java实行图片上写字
  15. 基于ssm柴犬主题咖啡厅系统
  16. Docker-Toolbox常见问题解决方案
  17. FTP内网穿透 报错 200 227 451 注意事项
  18. sublime去掉空行 sublime批量删除空白行
  19. linux进程地址空间内核,菜鸟求问linux进程地址空间问题
  20. numpy学习:np.subtract.outer

热门文章

  1. linux安装python虚拟环境_linux环境下安装python虚拟环境及注意事项
  2. python验证中心极限定理_我竟然混进了Python高级圈子!
  3. 联想拯救者y7000怎么配置Java环境_联想拯救者y7000重装系统教程
  4. ssh汉字乱码怎么办_ssh中文乱码解决
  5. oracle查看字典结构体,Oracle数据字典的实操
  6. ecshop affiche.php,affiche.php
  7. 修改系统路径 linux,Linux修改sudo的PATH路径的解决方法
  8. mysql和hbase优缺点_hbase优缺点
  9. java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  10. 第十七届全国大学生智能汽车竞赛,我们来了