【pyqt5学习】——QAbstractButton学习(普通按钮QPushButton、工具按钮QToolButton、单选按钮QRadioButton、复选框按钮QCheckBox)

目录

1、按钮介绍

2、普通按钮QPushButton学习

1)特殊模式——开关按钮(toggle)

①将按钮设置为可选择的

②将按钮按下

判断按钮是否被按下 isChecked()

2)给按钮设置前置图标setIcon()

 ​编辑

3)按钮信号

4)完整代码

3、单选按钮QRadioButton学习

 1)将按钮设置为选中状态setChecked()

2)信号toggled和clicked

3)获取发射信号的控件self.sender()

4)完整代码

 4、复选框QCheckBox学习

1)三种状态(未选中、半选中、选中)

2) 设置状态

①方法一——setCheckState

②方法二—— setChecked()

3)开启三种状态 ——setTristate(True)

4)获取复选框的状态isChecked()、checkState() 

5)信号——clicked、stateChanged 

 6)完整代码


1、按钮介绍

共四种按钮类型

QPushButton

QToolButton

QRadioButton

QCheckBox

有共同的父类:QAbstractButton

2、普通按钮QPushButton学习

1)特殊模式——开关按钮(toggle)

普通按钮的特殊模式即为开关状态,按钮只有按下和未按下两种状态,具体设置为:

①将按钮设置为可选择的

self.button1.setCheckable(True) # 将按钮设置为开关状态的特殊模式

②将按钮按下

self.button1.toggle() # 将按钮按下,只有将button属性设置为checkable该行才有用

注:上述一般是结合使用,若未将按钮的Checkable属性设置为TRUE,toggle是没有效果的

按下状态按钮会呈现浅蓝色:

 

未按下则显示灰色:

 

判断按钮是否被按下 isChecked()

 通过按钮名称.isChecked()方法可以判断按钮是否被按下 

2)给按钮设置前置图标setIcon()

self.button2.setIcon(QIcon(QPixmap("icon.jpg")))

 

3)按钮信号

clicked——常用的信号,就是“点击按钮”信号

toggled——这个信号只有开关模式的按钮才有,“按钮状态发生改变”信号

注:上述两个信号在普通按钮中的效果是一样的,因为要使得一个按钮的状态改变就必须点击按钮,因此效果一样

4)完整代码

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys# QPushButton——普通按钮
class QPushbuttonDemo(QWidget):def __init__(self):super(QPushbuttonDemo, self).__init__()self.initUI()def initUI(self):self.resize(30,300)self.setWindowTitle("普通按钮QPushButton学习")layout = QVBoxLayout()# 将普通按钮设置为特殊模式——开关按钮,有两个状态(按下和未按下)self.button1 = QPushButton("第一个按钮")self.button1.setText("First Button")print(self.button1.isChecked()) # Falseself.button1.setCheckable(True) # 将按钮设置为开关状态的特殊模式self.button1.toggle() # 将按钮按下,只有将button属性设置为checkable该行才有用print(self.button1.isChecked()) # TRUEself.button1.clicked.connect(self.showState) # 将按钮点击信号绑定事件self.button1.toggled.connect(self.showState) # 将按钮开关信号绑定事件,和上述一样# 给普通按钮添加图标self.button2 = QPushButton("图标按钮")self.button2.setIcon(QIcon(QPixmap("icon.jpg")))layout.addWidget(self.button1)layout.addWidget(self.button2)self.setLayout(layout)def showState(self):if self.button1.isChecked():print(self.button1.text() + "已按下")else:print(self.button1.text() + "未按下")if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QPushbuttonDemo()mainWin.show()sys.exit(app.exec_())

 运行结果:

 

3、单选按钮QRadioButton学习

在同一个布局或者同一个容器里面的单选按钮,只有一个单选按钮可以被选中,即当选择一个按钮时,其它的按钮就会被取消选择。

两种状态——选中和不被选中

 1)将按钮设置为选中状态setChecked()

self.button1.setChecked(True)

2)信号toggled和clicked

clicked——常用的信号,就是“选择按钮”信号

toggled——“按钮状态发生改变”信号

注:上述两个信号在普通按钮中的效果是不一样的,当选中一个按钮时,之前被选择的按钮会取消按钮,这时候“按钮状态改变”的按钮有两个,而被点击(选择)的按钮只有一个

		self.button1.clicked.connect(self.showState) # 点击的时候会触发事件self.button2.toggled.connect(self.showState) # 状态发生变化了就会触发事件

3)获取发射信号的控件self.sender()

radioButton = self.sender() # 获得信号发射的控件

4)完整代码

# QRadioButton——单选按钮
class QRadioButtonDemo(QWidget):def __init__(self):super(QRadioButtonDemo, self).__init__()self.initUI()def initUI(self):self.resize(30,300)self.setWindowTitle("单选按钮QRadioButton学习")layout = QVBoxLayout()self.button1 = QRadioButton("第一个按钮")self.button1.setText("First Button")self.button1.setChecked(True)self.button2 = QRadioButton("第二个按钮")self.button2.setText("Second Button")self.button1.clicked.connect(self.showState1) # 点击的时候会触发事件self.button2.toggled.connect(self.showState2) # 状态发生变化了就会触发事件layout.addWidget(self.button1)layout.addWidget(self.button2)self.setLayout(layout)def showState1(self):radioButton = self.sender() # 获得信号发射的控件if radioButton.isChecked() == True:print(radioButton.text() + "被选中_-------------------")else:print(radioButton.text() + "未被选中_-------------------------")def showState2(self):radioButton = self.sender() # 获得信号发射的控件if radioButton.isChecked() == True:print(radioButton.text() + "被选中")else:print(radioButton.text() + "未被选中")
if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QRadioButtonDemo()mainWin.show()sys.exit(app.exec_())

 

 可以看到:

1)当在按钮2被选中的情况下,选择按钮1,这时候由于按钮1被点击因此会调用槽函数showState1,且因为按钮2由选中的状态切换为取消选择状态,因此showState2槽函数也会被调用;

2)当在按钮1被选择的情况下,选择按钮2时,因为按钮2状态发生改变,因此会调用showState2槽函数,而由于按钮1未被点击,因此showState1槽函数不会被调用

 4、复选框QCheckBox学习

1)三种状态(未选中、半选中、选中)

复选框QCheckBox区别于单选按钮,复选框可以同时选中多个,有三种状态(未选中、半选中、选中)

未选中——0

半选中——1

选中——2

 

2) 设置状态

①方法一——setCheckState

self.checkbox3.setCheckState(num) # 其中num=1,2,3

其中0表示未选中、1表示半选择,2表示选中

self.checkbox3.setCheckState(0) # 未选中self.checkbox3.setCheckState(1) # 半选中self.checkbox3.setCheckState(2) # 选中

或者:

self.checkbox1.setCheckState(Qt.PartiallyChecked) # 半选中
self.checkbox1.setCheckState(Qt.Checked) # 选中

默认为不选中

②方法二—— setChecked()

self.checkbox1.setChecked(True) # 选中
self.checkbox1.setChecked(False) # 未选中

3)开启三种状态 ——setTristate(True)

默认是两种状态——选中和未选中

如果需要三种状态则需要开启

self.checkbox3.setTristate(True) ## 将三种状态同时存在的开关打开

4)获取复选框的状态isChecked()、checkState() 

 self.checkbox3.isChecked()

这里只能获得TRUE或者False,其中半选中和选中都为true

self.checkbox1.checkState() 

这里获得状态码,数字的形式

未选中——0

半选中——1

选中——2

5)信号——clicked、stateChanged 

 clicked——点击信号

stateChanged ——状态发生改变的信号

两者是一样的效果,原因和普通按钮一样

		self.checkbox1.clicked.connect(self.clickedSlot)self.checkbox3.stateChanged.connect(self.stateChangedSlot)

 6)完整代码

# 复选框控件QCheckBox控件
'''
三种状态:
选中:0
半选中:1
未选中:2
'''
from PyQt5.Qt import *class QCheckBoxDemo(QWidget):def __init__(self):super(QCheckBoxDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(500,30)self.setWindowTitle("复选框控件学习")layout = QHBoxLayout()self.checkbox1 = QCheckBox("复选框1")self.checkbox2 = QCheckBox("复选框2")self.checkbox3 = QCheckBox("复选框3")# 设置为选中,默认不选中self.checkbox1.setChecked(True)# 设置为半选中self.checkbox3.setTristate(True) ## 将三种状态同时存在的开关打开self.checkbox3.setCheckState(1) ## 设置为半选中layout.addWidget(self.checkbox1)layout.addWidget(self.checkbox2)layout.addWidget(self.checkbox3)self.checkbox1.clicked.connect(self.clickedSlot)self.checkbox3.stateChanged.connect(self.stateChangedSlot)self.setLayout(layout)# clickeddef clickedSlot(self):print(self.checkbox1.text() + ",isChecked=" +str(self.checkbox1.isChecked()) + ",checkedState=",str(self.checkbox1.checkState()))# stateChangeddef stateChangedSlot(self):print(self.checkbox3.text() + ",isChecked=" +str(self.checkbox3.isChecked()) + ",checkedState=",str(self.checkbox3.checkState()))if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QCheckBoxDemo()mainWin.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

挖财后端架构简介

挖财后端技术用的主要是比较大众的东西,Web容器用Tomcat,框架主要是Spring MVC,也有少量的Play,中间服务层是Dubbo,微容器用Spring Boot,服务注册这一块是用ZooKeeper,核心业务开发方式还是围绕…

【pyqt5学习】——QcomboBox学习

目录 1、添加条目: 1)逐一添加 2)批量添加 3)获取当前选中的索引 4)获取当前选中文本 5)根据索引获取文本 6)统计条目总数 7)信号——当前选中的索引发生改变currentIndexChanged() 2、…

vSphere Client 编辑虚拟机属性的问题

vSphere Client 编辑虚拟机属性的问题 编辑虚拟机属性的时候, 出现: vpxclient.vmconfig.cpuid 初始值设置异常之类的,重置了, 并将注册表中的所有vmvare 相关键值删除了, 还是一样的。。 后面参照https://kb.vmware.c…

【pyqt5学习】—— 滑动条Qslider、计数器QSpinBox学习

目录 1、滑动条QSlider 1)常用属性 2)实例——利用滑动条来实现字体大小的修改 ​编辑 2、计数器QSpinBox 1)属性方法 2)实例 1、滑动条QSlider 1)常用属性 self.slider QSlider(Qt.Horizontal)# 设置最小值self.slider.setMinimum(2)…

【pyqt5学习】——对话框QDialog学习(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)

目录 1、对话框QDialog类别 2、通用对话框 ​编辑 3、消息对话框QMessageBox() 1)消息对话框QMessageBox类型 2)案例 ​编辑 4、输入对话框QInputDialog 1) 类型 2)案例 5、字体格式对话框QFontDialog 6、颜色对话框QColorDialog 1&…

使用 Mesos 管理虚拟机

摘要 为了满足渲染、基因测序等计算密集型服务的需求,UCloud 推出了“计算工厂”产品,让用户可以快速创建大量的计算资源(虚拟机)。该产品的背后,是一套基于 Mesos 的计算资源管理系统。本文简要介绍该系统的结构、Mes…

Val编程-套接字

套接字的介绍:http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97 主要分为客户端和服务器。客户端一般是需要主动去链接,需要配置服务器的IP和端口。服务器是被动响应,需要打开相应的端口。端口一般不推荐使用系统端口和常用…

【pyqt5学习】——Qpainter控件学习(文本、图像、各种图形)

目录 1、作用及应用步骤 2、绘制文本drawText() 3、像素级别绘制点(正弦曲线为例) 4、绘制不同样式的直线 5、绘制弧形、圆形、扇形、图像等 6、画刷填充区域QBrush 1、作用及应用步骤 QPainter是一个用于绘制的类,该类可以用于绘制&…

反向代理与Real-IP和X-Forwarded-For(转)

如下图所示,客户端通过Nginx Proxy1 和 Nginx Proxy2 两层反向代理才访问到具体服务Nginx Backend(或如Tomcat服务)。那Nginx Backend如何才能拿到真实客户端IP呢? 接下来我们来看看如何才能获取到客户端真实IP。 场景1  场景1是…

Android studio打开之后 cannot load project: java.lang.NUllpointerException

参考来源:http://bbs.csdn.net/topics/391014393 关闭网络,重新打开Android studio就好了。(但是原因不清楚是为什么?) Internal error. Please report to http://code.google.com/p/android/issuescom.intellij.ide.p…

Val编程-任务编程

不同任务之间可以通过一个标志符来实现互斥事件。 程序代码&#xff1a; Task2 <span style"font-size:12px;">beginwhile truewait(bTaskFlag)cls()gotoxy(1,1)put("这是Task2")gotoxy(1,2)if bTaskFlagput("BFlag:true ")elseput(&…

【pyqt5学习】——拖拽功能(DragDrop)、剪切板(QApplication.clipboard)

目录 1、拖拽功能&#xff08;Drag&Drop&#xff09; 2、剪切板&#xff08;QApplication.clipboard&#xff09; 1、拖拽功能&#xff08;Drag&Drop&#xff09; 选择文本输入框中的文本&#xff0c;移动到下拉框中自动添加步骤&#xff1a; 1、将文本输入框设置为可…

Val编程-特殊函数使用

Waitendmove()和$Waitendmove()使用心得 这是两个部分&#xff0c;程序运行部分和运动堆栈部分&#xff0c;waitendmove是两个部分进行交互的一个函数。 一般情况下waitendmove()速度会降到0&#xff0c;相当于blend等于off. 代码&#xff1a; begincls()userPage()title("…

【pyqt5学习】——QDateTimeEdit控件学习

目录 1、同时显示日期时间QDateTime 2、只显示日期QDate 3、只显示时间QTime 4、设置显示的格式setDisplayFormat 5、 QDateTimeEdit常用信号 6、实例 1、同时显示日期时间QDateTime # 同时显示日期时间dateTimeEdit1 QDateTimeEdit()dateTimeEdit2 QDateTimeEdit(QDat…

复选框做成单选效果

function zlClick($id){ var eles document.getElementById($id).children; var srcEle event.srcElement; for(var i0;i<eles.length;i){ if(srcEle.checked){ if(eles[i].value!srcEle.value){ eles[i].checkedfalse; } } } } 技术领域可信计算 其他 申请日 200020012…

013. MVC5过滤器

微软提供了4中过滤器: 1.Action过滤器: 在Action方法执行之前和Action方法执行之后, 会执行此过滤器中的代码. 比如在执行public ActionResult Index()方法之前或之后; 也可以说是在方法执行前或执行后; 接口: IactionFilter 抽象类名: ActionFilterAttribute 添加一个实现…

Val编程-读取汉字

Val编程-读取汉字 Val编程中&#xff0c;对于汉字的读取不是很友好&#xff0c;利用fileget直接读取记事本产生的文件字符串会导致乱码的产生。因为Val只支持使用utf-8进行编码&#xff0c;因此读取的文本需要进行utf-8格式转换。 在GBK中&#xff0c;汉字占两个字节。并且…

【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习

目录 1、菜单栏&#xff08;QMenu()&#xff09;——一般在窗口顶部 1&#xff09;创建菜单栏步骤 2&#xff09;信号与方法 3&#xff09;实操 2、工具栏——一般在菜单栏下方 1&#xff09;创建步骤 2&#xff09;方法与信号 信号&#xff1a; 方法&#xff1a; 3&am…

【pyqt5学习】——利用Pyqt5连接打印机(QtPrintSupport、QPrintDialog、QPageSetupDialog)

目录 1、利用QtPrintSupport直接连接打印机——不常用 1&#xff09;基本知识 2&#xff09;完整代码案例 3&#xff09;结果 2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog 1&#xff09;弹出打印设置对话框 2&#xff09;弹出打印对话框 注&#xff1a…

Exchange Server 2016管理系列课件39.新建本地移动请求

场景通过新建本地移动请求&#xff0c;可以很方便的将用户邮箱从一个数据库迁移到另外一个数据库。1&#xff09;跨平台邮件迁移&#xff1b;&#xff08;低exchange迁移到高版本exchange&#xff09;2&#xff09;数据库平衡与优化&#xff1b;&#xff08;企业当中&#xff0…