我是靠谱客的博主 哭泣御姐,最近开发中收集的这篇文章主要介绍PYQT5(07)-基本窗口控件-按钮类控件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

QAbstractButton

所有按钮类的父类,为抽象类

提供如下状态

isDown()提示按钮是否被按下
isChecked()提示按钮是否已经标记
isEnable()提示按钮是否可以被用户点击
isCheckAble()提示按钮是否为可标记的
setAutoRepeat()设置按钮是否在用户长按时可以自动重复执行

提供如下信号

Pressed当鼠标指针在按钮上并按下左键时触发该信号
Rcleased当鼠标左键被释放时触发该信号
Clicked当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号
Toggled当按钮的标记状态发生改变时触发该信号

QPushButton

常用方法

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

代码示例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        layout = QVBoxLayout()

        self.btn1 = QPushButton("Button1")
        # 设置按钮已经被选中,保持已点击和释放状态
        self.btn1.setCheckable(True)
        # 在按钮状态之间进行切换
        self.btn1.toggle()
        # 通过lambda的方式来传递额外的参数btn1,将clicked信号发送给槽函数whichbtn()
        self.btn1.clicked.connect(lambda: self.whichbtn(self.btn1))
        # 当点击这个按钮时,将clicked信号发送给槽函数btnstate(),通过btn.isChecked
        # 来获得按钮是否被点击或释放的状态。
        self.btn1.clicked.connect(self.btnstate)
        layout.addWidget(self.btn1)

        self.btn2 = QPushButton('image')
        self.btn2.setIcon(QIcon(QPixmap("./images/python.png")))
        self.btn2.clicked.connect(lambda: self.whichbtn(self.btn2))
        layout.addWidget(self.btn2)
        self.setLayout(layout)

        self.btn3 = QPushButton("Disabled")
        # 按钮禁用
        self.btn3.setEnabled(False)
        layout.addWidget(self.btn3)

        self.btn4 = QPushButton("&Download")
        self.btn4.setDefault(True)
        self.btn4.clicked.connect(lambda: self.whichbtn(self.btn4))
        layout.addWidget(self.btn4)
        self.setWindowTitle("Button demo")

    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)
    btnDemo = Form()
    btnDemo.show()
    sys.exit(app.exec_())

 QRadioButton

setCheckable()设置按钮是否已经被选中,可以改变单选钮的选中状态,如果设置为True,则表示单选钮将保持已点击和释放状态
isChecked()返回单选钮的状态。返回值为True或False
setText()设置单选钮的显示文本
text()返回单选钮的显示文本

 代码示例

# -*- coding: utf-8 -*-

'''
    【简介】
	PyQt5中QRadio例子
   
  
'''

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class Radiodemo(QWidget):
    def __init__(self, parent=None):
        super(Radiodemo, self).__init__(parent)

        # 定义一个容器
        select_gb = QGroupBox("123")
        layout1 = QHBoxLayout()

        self.btn1 = QRadioButton("Button1", select_gb)
        self.btn1.setChecked(True)
        self.btn1.toggled.connect(lambda: self.btnstate(self.btn1))
        layout1.addWidget(self.btn1)

        self.btn2 = QRadioButton("Button2", select_gb)
        self.btn2.toggled.connect(lambda: self.btnstate(self.btn2))
        layout1.addWidget(self.btn2)

        self.btn3 = QRadioButton("Button3", select_gb)
        self.btn3.toggled.connect(lambda: self.btnstate(self.btn3))
        layout1.addWidget(self.btn3)

        select_gb.setLayout(layout1)  # 定义GroupBox的布局管理器

        select_gb2 = QGroupBox()
        layout2 = QHBoxLayout()
        self.btn4 = QRadioButton("Button4")
        layout2.addWidget(self.btn4)

        self.btn5 = QRadioButton("Button5")
        layout2.addWidget(self.btn5)

        select_gb2.setLayout(layout2)

        layout3 = QVBoxLayout()
        layout3.addWidget(select_gb)
        layout3.addWidget(select_gb2)

        self.setLayout(layout3)
        self.setWindowTitle("RadioButton demo")

    def btnstate(self, btn):
        if btn.text() == "Button1":
            if btn.isChecked() == True:
                print(btn.text() + " is selected")
            else:
                print(btn.text() + " is deselected")

        if btn.text() == "Button2":
            if btn.isChecked() == True:
                print(btn.text() + " is selected")
            else:
                print(btn.text() + " is deselected")

        if btn.text() == "Button3":
            if btn.isChecked() == True:
                print(btn.text() + " is selected")
            else:
                print(btn.text() + " is deselected")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    radioDemo = Radiodemo()
    radioDemo.show()
    sys.exit(app.exec_())

 QCheckBox

带文本标签的复选框

 常用方法

setChecked()设置复选框的状态,设置为True时表示选中复选框,设置为False时表示取消选中复选框
setText()设置复选框的显示文本
text()返回复选框的显示文本
isChecked()检查复选框是否被选中
setTriState()设置复选框为一个三态复选框

 三台复选框的三种状态

名称含义
Qt.Checked2组件没有被选中(默认值)
Qt.PartiallyChecked1组件被半选中
Qt.Unchecked0组件被选中

代码示例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt


class CheckBoxDemo(QWidget):

    def __init__(self, parent=None):
        super(CheckBoxDemo, self).__init__(parent)

        groupBox = QGroupBox("Checkboxes")
        # 是否去掉边框
        groupBox.setFlat(False)

        layout = QHBoxLayout()
        self.checkBox1 = QCheckBox("&Checkbox1")
        self.checkBox1.setChecked(True)
        self.checkBox1.stateChanged.connect(lambda: self.btnstate(self.checkBox1))
        layout.addWidget(self.checkBox1)

        self.checkBox2 = QCheckBox("Checkbox2")
        self.checkBox2.toggled.connect(lambda: self.btnstate(self.checkBox2))
        layout.addWidget(self.checkBox2)

        self.checkBox3 = QCheckBox("tristateBox")
        self.checkBox3.setTristate(True)
        self.checkBox3.setCheckState(Qt.PartiallyChecked)
        self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))
        layout.addWidget(self.checkBox3)

        groupBox.setLayout(layout)
        mainLayout = QVBoxLayout()
        mainLayout.addWidget(groupBox)

        self.setLayout(mainLayout)
        self.setWindowTitle("checkbox demo")

    def btnstate(self, btn):
        chk1Status = self.checkBox1.text() + ", isChecked=" + str(self.checkBox1.isChecked()) + ', chekState=' + str(
            self.checkBox1.checkState()) + "n"
        chk2Status = self.checkBox2.text() + ", isChecked=" + str(self.checkBox2.isChecked()) + ', checkState=' + str(
            self.checkBox2.checkState()) + "n"
        chk3Status = self.checkBox3.text() + ", isChecked=" + str(self.checkBox3.isChecked()) + ', checkState=' + str(
            self.checkBox3.checkState()) + "n"
        print(chk1Status + chk2Status + chk3Status)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    checkboxDemo = CheckBoxDemo()
    checkboxDemo.show()
    sys.exit(app.exec_())

 

 

最后

以上就是哭泣御姐为你收集整理的PYQT5(07)-基本窗口控件-按钮类控件的全部内容,希望文章能够帮你解决PYQT5(07)-基本窗口控件-按钮类控件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部