百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

QPushButton详细使用 qpushbutton设置背景图片

liebian365 2024-10-20 09:55 31 浏览 0 评论

QPushButton

Header:

#include <QPushButton>

qmake:

QT += widgets

Inherits:

QAbstractButton

Inherited By:

QCommandLinkButton

QPushButton是最常用的用户控件,可以单击按钮执行操作,通常的按钮操作有OK,Apply,Cancel,Yes,No 和Help

QPushButton在windows可以设置快捷键操作,在文本前加&符号即可,实例

import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QPushButton Test")
        self.setGeometry(500, 200, 400, 300)

        self.button = QPushButton("&Click me", self) #设置快捷键Alt+C
        self.button.move(100, 100)
        self.button.clicked.connect(self.button_clicked)

    def button_clicked(self):
        print("Button clicked")

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

QPushButton显示文本标签和可选的小图标。这些可以使用构造函数进行设置,并在稍后使用setText()和setIcon()进行更改。如果按钮被禁用,则文本和图标的外观将根据GUI样式进行操作,使按钮看起来“禁用”。

void QAbstractButton::animateClick(int msec= 100)

import sys
import time

from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QApplication,
                             QPushButton,
                             QWidget,
                             QHBoxLayout,
                             QVBoxLayout)


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QPushButton Test")
        qvb = QVBoxLayout()

     
        self.button4 = QPushButton('点击按钮效果', self)
        self.button4.clicked.connect(self.on_button_clicked)

        qvb.addWidget(self.button4)
        self.setLayout(qvb)

    def on_button_clicked(self):
        print('Button clicked')

    def animate_button_click(self):
        # 模拟点击按钮的动画效果
        self.button.animateClick(3000) #3秒后按钮被释放,执行点就效果

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    QTimer.singleShot(1000,window.animate_button_click) #到1秒后自动执行方法
    sys.exit(app.exec_())

QPushButton Click()与Clicked()

在 PyQt 中,clicked()click() 是两个不同的方法:

  1. clicked() 是一个信号(Signal),用于在按钮被点击时发出信号,可以连接到槽(Slot)函数,以便在按钮被点击时执行特定操作。
  2. click() 是一个方法,用于模拟按钮被点击的动作。调用 click() 方法等同于用户实际点击了按钮一样,会触发按钮的 clicked 信号,并执行与之相连接的槽函数。

下面是一个简单的示例,演示了 clicked() 信号和 click() 方法的使用:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('Button Example')
        self.setGeometry(200, 200, 300, 100)

        self.button = QPushButton('Click Me', self)
        self.button.clicked.connect(self.on_button_clicked)
        self.button.setGeometry(100, 40, 100, 30)

    def on_button_clicked(self):
        print('Button clicked')

    def simulate_button_click(self):
        # 模拟按钮点击
        self.button.click()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()

    # 模拟按钮点击
    window.simulate_button_click()

    sys.exit(app.exec_())

在这个示例中,我们创建了一个 QPushButton,并连接了 clicked() 信号到一个槽函数 on_button_clicked。然后定义了一个名为 simulate_button_click 的方法,用于调用按钮的 click() 方法来模拟按钮的点击动作。

pressed信号

import sys
from PyQt5.QtWidgets import QApplication, QPushButton


class Window(QPushButton):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QPushButton Pressed")
        self.setGeometry(500, 200, 400, 300)
        self.setText("pressed test")
        self.pressed.connect(self.button_pressed)

    def button_pressed(self):
        print("Button clicked")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

functools.partial和lambda

在 PyQt 中,您可以使用 functools.partial 来绑定槽函数并传递参数。下面是一个示例,演示了如何在 QPushButton 上绑定槽并传递参数:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from functools import partial

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('Button Example')
        self.setGeometry(200, 200, 300, 100)

        self.button = QPushButton('Click Me', self)
        self.button.setGeometry(100, 40, 100, 30)

        # 使用 functools.partial 绑定带参数的槽函数
        self.button.clicked.connect(partial(self.on_button_clicked, 'Hello'))

    def on_button_clicked(self, message):
        print('Button clicked:', message)

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

在这个示例中,我们使用 functools.partial 绑定了槽函数 on_button_clicked 并传递了一个参数 'Hello'。当按钮被点击时,槽函数将被调用,并输出带有参数的消息。

这种方式在需要通过按钮单击来执行某个操作并传递额外参数时非常有用。

您可以使用lambda表达式来传递带参数的信号。下面是一个简单的示例,演示了如何在PyQt中使用lambda表达式传递带参数的信号:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('Button Example')
        self.setGeometry(200, 200, 300, 100)

        self.button = QPushButton('Click Me', self)
        self.button.setGeometry(100, 40, 100, 30)

        # 使用 lambda 表达式传递带参数的信号
        self.button.clicked.connect(lambda: self.on_button_clicked('Hello'))

    def on_button_clicked(self, message):
        print('Button clicked:', message)

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

在这个示例中,我们使用lambda表达式传递了带参数的信号。当按钮被点击时,lambda表达式将调用槽函数on_button_clicked,并传递参数'Hello'。

相关推荐

C++零基础入门学习指南(中篇)

目标:像拼装乐高一样理解程序模块,掌握内存管理核心技能...

“5 分钟 CMake 使用指南,解决我的 C++ 打包问题!”

...

Linux下跨语言调用C++实践

不同的开发语言适合不同的领域,例如Python适合做数据分析,C++适合做系统的底层开发,假如它们需要用到相同功能的基础组件,组件使用多种语言分别开发的话,不仅增加了开发和维护成本,而且不能确保多种语...

输入格式控制:C++程序中的数据接收与处理技巧

在C++编程中,输入输出是非常基本且重要的操作。尤其是输入部分,程序员通常需要从用户那里获取数据,并根据不同的输入格式进行处理。然而,用户的输入往往是多样化的,如何有效地控制输入格式,确保程序正确接收...

常见读写excel文件的库/类

在C++语言中读写EXCEL表格,有这几种方法:COM方式、ODBC方式、OLE方式、纯底层格式分析方式。Basicexcel使用方法:https://www.cnblogs.com/paullam/...

C++文档识别接口如何实现 高效办公

  数字化信息爆炸时代,办公效率的提升成为企业和个人的迫切需求。人工智能技术的飞速发展,为我们带来了前所未有的便利,翔云文档识别接口便是其中之一。  与传统的人工手动录入相比,文档识别接口优势显著。人...

C++如何生成Microsoft Word文档

...

超实用C++学习指南:语法要点、经典书籍、实战案例全汇总!

以下是为您整理的C++学习指南,综合了语法要点、资源推荐及实战方向,结合搜索结果和经典知识体系,帮助您系统学习:一、C++基础语法学习指南1.核心概念oC++是静态类型、编译式语言,支持面向对象和...

掌握C++文件读写,让代码更灵动!

文章改写指令通常涉及对原有文本进行调整、重组或重新表达,以保持或增强信息的准确性和可读性,同时可能改变风格、语气或目标受众。以下是一些具体的文章改写指令示例:·2.简化语言:→指令:将文章中的复杂词汇...

闲置宽带能换钱?P2P CDN、无线宝、赚钱宝到底靠不靠谱

无线宝类产品其实由来已久,无线宝类产品即与支付宝、余额宝、余利宝等货币基金毫无干系,与区块链“挖币”更存在本质的不同,而是一种利用家庭中的闲置宽带,通过流量来换取佣金的产品。无线宝类产品其实在过去几年...

攻略什么?闲置宽带还可以赚钱?

现在很多朋友在使用10Mbps、50Mbps甚至100Mbps的高速宽带,不过普通用户并不是长时间都需要这么高速的宽带。比如对于100Mbps的宽带用户,在日常浏览网页时,基本上2Mbps左右的带宽即...

明日学业水平考试开始报名 详细步骤都在这里

点击上面蓝字关注我们哦~日前,山东省教育考试院发布了《山东省2019年夏季学业水平考试报名考生操作说明》(点击文末阅读原文查看),明天就到了报名的时候了,详细的报名步骤、网上缴费流程、追加报考科目等...

瞄准用户上传带宽:HiWiFi 极路由 联合 迅雷 推出 “极赚钱”套餐

上次总理谈到宽带降价问题时,很多网友除了吐槽网速慢费用贵,还反映宽带网络的上下行速度不对等。比如说以前ADSL2M的宽带只有512Kbps的上行速度,现在升级到光纤网络之后,按理说技术上实现上下行...

揭秘P2P平台刷数据:交易额从100万到1200万

(作者:峰岭、刘珺、周娜)从默默无闻到万众瞩目,从“零数据”到“大数据”,从小众投资到大众理财,从个人借贷到企业借款,从个人信用到车、房、资产抵押……近两年来P2P行业以迅雷之速快速爆发,P2P平台也...

运营商让我签这个宽带违规使用告知函,我懵逼了

特么的是爱奇艺迅雷自己上传的p2p数据,btpt也会上传,直播也会上传,监控也会,传文件也会,到底他么的运营商你要干个啥啊,我不仅没捞着一分好处,夹在中间两头受气!真特么晦气这特么是谁弄的函?完全没搞...

取消回复欢迎 发表评论: