当前位置:首页 >> 编程语言 >> 【pyqt5学习】——QAbstractButton学习(普通按钮QPushButton、工具按钮QToolButton、单选按钮QRadioButton、复选框按钮QCheckBox),酷派8150d

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

0evadmin 编程语言 1
文件名:【pyqt5学习】——QAbstractButton学习(普通按钮QPushButton、工具按钮QToolButton、单选按钮QRadioButton、复选框按钮QCheckBox),酷派8150d 【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_())

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接