【PyQt5】二、按钮的抽象类功能测试

功能列表

代码示例见源码

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


猜你喜欢

转载自blog.csdn.net/qq_44921056/article/details/128569344
今日推荐