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

本文介绍了PyQt5中按钮组件的使用方法,包括QPushButton、QRadioButton和QCheckBox的实例演示,并展示了如何设置按钮的各种属性及响应点击事件。

参考书籍《PyQt5 快速开发与实战》王硕 孙洋洋 著


介绍

PyQt5按钮的基类是QAbstractButton,为抽象类,不能实例化。
常见的按钮类有:QPushButton、QToolButton、QRadioButton和QCheckBox.

代码示例

QPushButton的使用

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

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

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")
        # setChenkable():设置按钮是否已经被选中,true表示按钮将被保持已点击和释放状态
        self.btn1.setCheckable(True)
        # toggle():在按钮之间进行切换
        self.btn1.toggle()
        # 通过lambda方式来传递额外的参数btn1,将clicked信号发送给槽函数whichbtn()
        self.btn1.clicked.connect(lambda:self.whichbtn(self.btn1) )
        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")
        # setEnabled():设置按钮是否可用,false时按钮变成不可用状态,点击它不会发送信号
        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_())

效果展示

1


QRadioButton的使用

# -*- 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)
        layout = QHBoxLayout()  #设置水平布局
        self.btn1 = QRadioButton("Button1")
        self.btn1.setChecked(True)
        self.btn1.toggled.connect(lambda:self.btnstate(self.btn1))
        layout.addWidget(self.btn1)

        self.btn2 = QRadioButton("Button2")
        self.btn2.toggled.connect(lambda:self.btnstate(self.btn2))
        layout.addWidget(self.btn2)
        self.setLayout(layout)
        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 __name__ == '__main__':
    app = QApplication(sys.argv)
    radioDemo = Radiodemo()
    radioDemo.show()
    sys.exit(app.exec_())

效果展示
2


QCheckBox的使用

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

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


'''

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( True )

        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 )  #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 ):
        #打印复选框选中状态:0表示被选中;1表示半选中;2表示没有被选中
        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_())

效果展示
3


参考资源

1.《PyQt5快速开发与实战》王硕,孙洋洋
2.《PyQt5快速开发与实战》源代码下载链接

PyQt 中的 `QPushButton` 控件是一个非常常用的按钮控件,用于创建标准的按钮,并可以响应用户的点击事件。以下是关于 `QPushButton` 的一些基本信息及其常见用法: --- ### **1. 创建 QPushButton** 通过 PyQt5PyQt6 库提供的 `QPushButton` 可以直接实例化一个按钮对象。 ```python from PyQt5.QtWidgets import QApplication, QPushButton app = QApplication([]) button = QPushButton("点我") ``` 上述代码会生成一个显示文本为“点我”的按钮。 --- ### **2. 设置按钮属性** #### (1) 修改按钮文字: 使用 `setText()` 方法设置或更改按钮上的文字内容。 ```python button.setText("新标题") ``` #### (2) 按钮禁用/启用状态: 通过 `setEnabled(True)` 启用按钮;`setEnabled(False)` 禁用按钮。 ```python button.setEnabled(False) ``` #### (3) 自定义图标: 可以给按钮添加图片作为图标。 ```python from PyQt5.QtGui import QIcon icon = QIcon('path_to_icon.png') # 替换路径为你的真实文件位置 button.setIcon(icon) ``` --- ### **3. 连接信号与槽函数** 当用户按下按钮时触发指定操作。这需要将按钮的 `clicked` 信号连接到相应的槽函数上。 示例如下: ```python def on_button_click(): print("按钮被按下了!") # 将 clicked 信号绑定到自定义处理函数 button.clicked.connect(on_button_click) # 显示窗口(假设已构建好主界面) window.show() app.exec_() ``` 在这个例子中,每当按钮被单击时都会打印一条消息到控制台。 --- ### **4. 布局管理** 为了更好地展示按钮,在实际项目里通常结合布局管理器一起使用,如 `QVBoxLayout`, `QHBoxLayout` 等等。 ```python from PyQt5.QtWidgets import QWidget, QVBoxLayout main_window = QWidget() # 主窗体组件 layout = QVBoxLayout() # 使用垂直布局 layout.addWidget(button) main_window.setLayout(layout) main_window.setWindowTitle("测试窗口") main_window.resize(300, 200) main_window.show() ``` 以上步骤完成了对按钮的基本配置以及简单 GUI 构建过程演示。 --- **注意:** 如果你是第一次接触 PyQt ,建议先安装环境(`pip install PyQt5`)并熟悉基础构件的概念和用途!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingpy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值