博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5之按钮类控件
阅读量:3959 次
发布时间:2019-05-24

本文共 5892 字,大约阅读时间需要 19 分钟。

PyQt5之按钮类控件

按钮的基类是QAbstractButton,提供了按钮的通用性功能。QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类来实现不同的功能和不同的表现形式。

一、QAbstractButton类

  1. QAbstractButton提供的状态:
状态 含义
isDown() 提示按钮是否被按下
isChecked() 提示按钮是否已经标记
isEnabled() 提示按钮是否可以被用户点击
isCheckAble() 提示按钮是否为可标记的
setAutoRepeat() 设置按钮是否在用户长按时可以自动重复执行
  1. QAbstractButton提供的信号:
信号 含义
Pressed 当鼠标指针在按钮上并按下左键时触发该信号
Released 当鼠标左键被释放时触发该信号
Clicked 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号
Toggled 当按钮的标记状态发生改变时触发该信号

二、QPushButton

QPushButton类继承自QAbstractButton类,其形状是长方形,文本标题或图标可以显示在长方形上。它也是一种命令按钮,可以单击该按钮执行一些命令,或者响应一些事件。

  1. QPushButton类中的常用方法
方法 描述
setCheckable() 设置按钮是否已经被选中,如果设置为True,则表示按钮将保持已点击和释放状态
toggle() 在按钮状态之间进行转换
setIcon() 设置按钮上的图标
setEnabled() 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号
isChecked() 返回按钮的状态,返回值为True或False
setDefault() 设置按钮的默认状态
setText() 设置按钮的显示文本
text() 返回按钮的显示文本
  1. 为QPushButton设置快捷键

通过按钮名字能为QPushButton设置快捷键,比如名字为“&Download”的按钮,它的快捷键是“Alt+D”。其规则是:想要实现快捷键为“Alt+D”,那么按钮的名字里就要有字母D,并且在字母D前面加上“&”。这个字母一般是按钮名称的首字母,而且在按钮显示时,“&”不会被显示出来,但字母D会显示一条下划线。

QPushButton按钮的使用:

import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Win(QWidget):    def __init__(self):        super().__init__()        self.setGeometry(200, 200, 400, 400)        self.setWindowTitle('QPushButton的使用')        self.btn1 = QPushButton('Button1')        self.btn1.setCheckable(True)        self.btn1.toggle()        self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))        self.btn1.clicked.connect(self.btnstate)        self.btn2 = QPushButton('image')        self.btn2.setIcon(QIcon(QPixmap('head1.jpg')))        self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2))        self.btn3 = QPushButton('Disabled')        self.btn3.setEnabled(False)        self.btn4 = QPushButton('&Download')        self.btn4.setDefault(True)        self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4))        layout = QVBoxLayout()        layout.addWidget(self.btn1)        layout.addWidget(self.btn2)        layout.addWidget(self.btn3)        layout.addWidget(self.btn4)        self.setLayout(layout)    def btnstate(self):        if self.btn1.isChecked():            print('button pressed')        else:            print('button released')    def whichbtn(self,btn):        print('clicked button is'+btn.text())if __name__ == "__main__":    app = QApplication(sys.argv)    form = Win()    form.show()    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述

三、QRadioButton

QRadioButton类继承自QAbstractButton类,它提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项,标签用于显示对应的文本信息。单选按钮是一种开关按钮,可以切换为on或者off,即checkedunchecked。当将单选按钮切换到on或者off时,就会发送toggled信号,绑定这个信号,在按钮状态发生改变时,触发相应的行为。

  1. QRadioButton类中的常用方法
方法 描述
setCheckable() 设置按钮是否已经被选中,如果设置为True,则表示单选按钮将保持已点击和释放状态
isChecked() 返回单选按钮的状态,返回值为True或False
setText() 设置单选按钮的显示文本
text() 返回单选按钮的显示文本
  1. QRadioButton按钮的使用
import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Win(QWidget):    def __init__(self):        super().__init__()        self.setGeometry(200, 200, 400, 400)        self.setWindowTitle('QRadioButton的使用')        self.btn1 = QRadioButton('Button1')        self.btn1.setCheckable(True)        self.btn1.toggle()        self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))        self.btn2 = QRadioButton('Button2')        self.btn2.toggled.connect(lambda: self.btnstate(self.btn2))        layout = QHBoxLayout()        layout.addWidget(self.btn1)        layout.addWidget(self.btn2)        self.setLayout(layout)    def btnstate(self,btn):        if btn.text() == 'Button1':            if btn.isChecked():                print(btn.text()+'is selected')            else:                print(btn.text() + 'is deselected')        if btn.text() == 'Button2':            if btn.isChecked():                print(btn.text() + 'is selected')            else:                print(btn.text() + 'is deselected')if __name__ == "__main__":    app = QApplication(sys.argv)    form = Win()    form.show()    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述

四、QCheckBox

QCheckBox类继承自QAbstractButton类,它提供了一组带文本标签的复选框,用户可以选择多个选项。

  1. QCheckBox类的常用方法
方法 描述
setChecked() 设置复选框的状态,设置为True时表示选中复选框,设置为False时表示取消选中复选框
isChecked() 检查复选框是否被选中
setText() 设置复选框的显示文本
text() 返回复选框的显示文本
  1. 三态复选框的三种状态
名称(值) 含义
Qt.Checked(2) 组件没有被选中(默认值)
Qt.PartiallyChecked(1) 组件被半选中
Qt.Unchecked(0) 组件被选中
  1. QCheckBox的使用
import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Win(QWidget):    def __init__(self):        super().__init__()        self.setGeometry(200, 200, 400, 400)        self.setWindowTitle('QCheckBox的使用')        groupbox = QGroupBox('CheckBoxes')        groupbox.setFlat(True)        self.cb1 = QCheckBox('CheckBox1')        self.cb1.setChecked(True)        self.cb1.stateChanged.connect(lambda :self.btnstate(self.cb1))        self.cb2 = QCheckBox('CheckBox2')        self.cb2.toggled.connect(lambda: self.btnstate(self.cb2))        self.cb3 = QCheckBox('CheckBox3')        self.cb3.setTristate(True)        self.cb3.setCheckState(Qt.PartiallyChecked)        self.cb3.stateChanged.connect(lambda :self.btnstate(self.cb3))        layout = QHBoxLayout()        layout.addWidget(self.cb1)        layout.addWidget(self.cb2)        layout.addWidget(self.cb3)        groupbox.setLayout(layout)        mainLayout = QVBoxLayout()        mainLayout.addWidget(groupbox)        self.setLayout(mainLayout)    def btnstate(self,btn):        cb1Status = self.cb1.text() + ",isChecked="  + str(self.cb1.isChecked()) + ",checkState=" + str(self.cb1.checkState()) + "\n"        cb2Status = self.cb2.text() + ",isChecked=" + str(self.cb2.isChecked()) + ",checkState=" + str(self.cb2.checkState()) + "\n"        cb3Status = self.cb3.text() + ",isChecked=" + str(self.cb3.isChecked()) + ",checkState=" + str(self.cb3.checkState()) + "\n"        print(cb1Status+cb2Status+cb3Status)if __name__ == "__main__":    app = QApplication(sys.argv)    form = Win()    form.show()    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述

转载地址:http://jvozi.baihongyu.com/

你可能感兴趣的文章
在Linux上用pip安装scipy
查看>>
随机salt二次加密及hash加密漫谈
查看>>
linux 技巧:使用 screen 管理你的远程会话
查看>>
同时装了Python3和Python2,怎么用pip?
查看>>
linux tar 解压缩zip文件报错的解决
查看>>
vim,ctag和Taglist
查看>>
Ubuntu的apt命令详解
查看>>
Ubuntu Server 设置sshd
查看>>
sort,uniq命令的使用。
查看>>
linux下md5加密(使用openssl库C实现)
查看>>
openssl、MD5的linux安装方法
查看>>
DevC++ 工程没有调试信息的解决办法
查看>>
http消息长度的确定
查看>>
手机和电脑如何连接蓝牙
查看>>
HTTP协议参数
查看>>
wireshark检索命令
查看>>
五人分鱼问题(附答案)
查看>>
linux查看文件有多少行
查看>>
error:previous declartion of "XXX" is here的解决方法
查看>>
sha1的几个函数的使用
查看>>