功能列表
代码示例见源码
1、文本操作
- setText():设置按钮提示文本
- text():获取按钮提示文本
2、图标操作
- setIcon(QIcon(“图片路径”)):设置图标
- setIconSize(QSize(w,h)):设置图标大小
- icon():获取图标
- iconSize():获取图标大小
3、快捷键操作
- setText():通过在快捷键字母前面加&,程序会自动设置。这样设置会有文本提示
- setShortcut():自己设置快捷键,这样设置没有文本提示
4、自动重复操作
- setAutoRepeat(bool):设置自动重复;True:重复;False:不重复
- setAutoRepeatInterval(毫秒):设置自动重复检测间隔
- setAutoRepeatDelay(毫秒):设置初次检测延迟
- autoRepeat():获取是否自动重复
- autoRepeatInterval():获取自动重复检测间隔
- autoRepeatDelay():获取初次检测延迟
5、状态操作
- isDown():检测按钮是否被按下
- setDown(bool):True:设置按钮被按下;False:设置按钮不被按下
- isCheckable(bool):检测按钮是否可以被选中;True:可以;False:不可以
- setCheckable(bool):设置按钮能否被选中;True:能;False:不能
- setChecked(bool):设置按钮是否被选中;True:被选中;False:没被选中
- isEnabled(bool):查看按钮是否能用
- setEnabled(bool):设置按钮是否能用;True:能用;False:不能用
6、排他性设置
多个按钮如果设置了排他性,在同一时刻,则只能选中其中一个按钮
- autoExclusive():是否自动排他
- setAutoExclusive(bool):True:设置排他性;False:不设置
7、模拟点击
- click():普通点击
- animateClick(毫秒):延迟点击(点击效果会有延迟)
8、设置有效区域
- 重写hitButton(QPoint):返回True,则有效;返回False,则无效。
9、信号
- pressed():鼠标按下信号
- released():鼠标释放信号
- clicked():按下+释放=点击
- toggled():切换信号,一般用于复选框
示例源码
# -*- coding: UTF-8 -*-
"""
# @Author: 爱打瞌睡的CV君
# @CSDN: https://blog.csdn.net/qq_44921056
"""
from PyQt5.Qt import *
import sys
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件的操作
# 2.1 创建控件
window = QWidget()
# 2.2 设置控件
window.setWindowTitle("按钮的功能测试-抽象类") # 设置窗口标题
window.resize(500, 500) # 设置窗口大小
btn = QPushButton(window) # 创建一个按钮
"""
文本操作
setText():设置按钮提示文本
text():获取按钮提示文本
"""
# btn.setText("1")
# # 设置的槽函数
# def plus_one():
# num = int(btn.text()) + 1 # 获取按钮文本,并加一
# btn.setText(str(num)) # 重新设置按钮文本
#
# btn.pressed.connect(plus_one) # 与槽函数链接
"""
图标操作
setIcon(QIcon("图片路径")):设置图标
setIconSize(QSize(w,h)):设置图标大小
icon():获取图标
iconSize():获取图标大小
"""
# icon = QIcon("xxx.png")
# btn.setIcon(icon)
#
# size = QSize(50, 50)
# btn.setIconSize(size)
#
# print(btn.icon())
# print(btn.iconSize())
"""
快捷键操作
setText():通过在快捷键字母前面加&,程序会自动设置。这样设置会有文本提示
setShortcut():自己设置快捷键,这样设置没有文本提示
"""
# btn.pressed.connect(lambda: print("按钮被点击了")) # lambda是匿名函数
# # 下面这两种方法是一样的效果,用其中一个的时候,注释掉另一个
# btn.setText("&abc")
# btn.setShortcut("Alt+a")
"""
自动重复操作
setAutoRepeat(bool):设置自动重复;True:重复;False:不重复
setAutoRepeatInterval(毫秒):设置自动重复检测间隔
setAutoRepeatDelay(毫秒):设置初次检测延迟
autoRepeat():获取是否自动重复
autoRepeatInterval():获取自动重复检测间隔
autoRepeatDelay():获取初次检测延迟
"""
# btn.pressed.connect(lambda: print("按钮被点击了"))
# btn.setAutoRepeat(True)
# btn.setAutoRepeatDelay(2000)
# btn.setAutoRepeatInterval(1000)
# print(btn.autoRepeat())
# print(btn.autoRepeatInterval())
# print(btn.autoRepeatDelay())
"""
状态操作
isDown():检测按钮是否被按下
setDown(bool):True:设置按钮被按下;False:设置按钮不被按下
isCheckable(bool):检测按钮是否可以被选中;True:可以;False:不可以
setCheckable(bool):设置按钮能否被选中;True:能;False:不能
setChecked(bool):设置按钮是否被选中;True:被选中;False:没被选中
isEnabled(bool):查看按钮是否能用
setEnabled(bool):设置按钮是否能用;True:能用;False:不能用
"""
# # 设置三个按钮
# push_button = QPushButton(window)
# push_button.setText("这是QPushButton")
# push_button.move(100, 100)
#
# radio_button = QRadioButton(window)
# radio_button.setText("这是一个radio")
# radio_button.move(100, 150)
#
# checkbox = QCheckBox(window)
# checkbox.setText("这是checkbox")
# checkbox.move(100, 200)
#
# # 设置push_button被按下时的样式
# push_button.setStyleSheet("QPushButton:pressed {background-color: red;}")
#
# # 把三个按钮, 置为按下状态
# # push_button.setDown(True)
# # radio_button.setDown(True)
# # checkbox.setDown(True)
# push_button.setCheckable(True) # 将push_button设置为可以选中状态
# print(push_button.isCheckable())
# print(radio_button.isCheckable())
# print(checkbox.isCheckable())
#
# # 将三个按钮设置成选中状态
# radio_button.setChecked(True)
# push_button.setChecked(True)
# checkbox.setChecked(True)
#
# print(push_button.isChecked())
# print(radio_button.isChecked())
# print(checkbox.isChecked())
#
# # 切换选中与未选中的状态的槽函数
# def cao():
# push_button.toggle()
# radio_button.toggle()
# checkbox.toggle()
#
# # push_button.setChecked(not push_button.isChecked())
#
# # 将左上角的按钮与槽函数链接
# btn.pressed.connect(cao)
#
#
# push_button.setEnabled(True)
# radio_button.setEnabled(False)
# checkbox.setEnabled(False)
# 2.3 展示控件
"""
排他性设置:多个按钮如果设置了排他性,在同一时刻,则只能选中其中一个按钮
autoExclusive():是否自动排他
setAutoExclusive(bool):True:设置排他性;False:不设置
"""
# for i in range(0, 3):
# # 设置三个按钮
# btn = QCheckBox(window)
# btn.setText("btn" + str(i))
# btn.move(50 * (i + 1), 50 * i)
#
# btn.setAutoExclusive(True) # 设置按钮具有排他性
# print(btn.autoExclusive()) # 查看按钮是否有排他性
# print(btn.isCheckable()) # 查看按钮是否可以被选中
# btn.setCheckable(True) # 设置按钮可以被选中
"""
模拟点击
click():普通点击
animateClick(毫秒):延迟点击(点击效果会有延迟)
"""
# btn.setText("按钮1")
# btn.move(200, 200)
# btn.pressed.connect(lambda: print("点击了按钮1"))
#
# btn2 = QPushButton(window)
# btn2.setText("按钮2")
# # 槽函数
# def test():
# btn.animateClick(1000)
# # 按钮2绑定test槽函数
# btn2.pressed.connect(test)
"""
设置有效区域:
重写hitButton(QPoint):返回True,则有效;返回False,则无效。
"""
# class Btn(QPushButton):
# # 将按钮的右半边设置为有效区域
# def hitButton(self, point):
# print(point) # 打印点击区域
# if point.x() > self.width() / 2:
# return True
# return False
#
#
# btn = Btn(window)
# btn.move(100, 100)
# btn.setText("点击")
# btn.resize(200, 200)
# btn.setCheckable(True)
"""
信号(需要和上一部分一起运行)
pressed():鼠标按下信号
released():鼠标释放信号
clicked():按下+释放=点击
toggled():切换信号,一般用于复选框
"""
# btn.pressed.connect(lambda: print("按钮被按下了"))
#
# btn.released.connect(lambda: print("按钮鼠标被释放了"))
#
# btn.clicked.connect(lambda value: print("按钮被点击", value))
#
# btn.toggled.connect(lambda value: print("按钮选中状态发生了改变", value))
window.show()
# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())