zoukankan      html  css  js  c++  java
  • PyQt5Day08--QAbstractButton

    1、QAbstractButton的简介

      所有按钮控件的基类,提供按钮的通用功能

     1 # *******************QAbstractButton**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("QAbstractButton")
     9 window.resize(500,500)
    10 
    11 class Btn(QAbstractButton):
    12     def paintEvent(self,evt):
    13         print("绘制按钮")
    14         # 创建一个画家
    15         painter = QPainter(self)
    16 
    17         # 创建一支笔
    18         pen = QPen(QColor(111,200,20),5)
    19         # 设置这支笔
    20         painter.setPen(pen)
    21 
    22         # 画家画
    23         painter.drawText(35,55,self.text())
    24 
    25         painter.drawEllipse(0,0,100,100)
    26 
    27 
    28 btn = Btn(window)
    29 btn.setText("xxx")
    30 btn.resize(100,100)
    31 
    32 btn.pressed.connect(lambda :print("点击了这个按钮"))
    33 
    34 window.show()
    35 sys.exit(app.exec_())
    36 # *******************QAbstractButton**********************结束

    2、QAbstractButton——提示文本

    (1)框架

    (2)操作

     1 # *******************提示文本**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 
     6 app=QApplication(sys.argv)
     7 
     8 window=QWidget()
     9 window.setWindowTitle("提示文本-抽象类")
    10 window.resize(500,500)
    11 
    12 btn = QPushButton(window)
    13 btn.setText('1')
    14 
    15 def plus_one():
    16     print("加1")
    17     num = int(btn.text()) + 1
    18     btn.setText(str(num))
    19 
    20 btn.pressed.connect(plus_one)
    21 
    22 window.show()
    23 sys.exit(app.exec_())
    24 # *******************提示文本**********************结束
    提示文本

    3、QAbstractButton——图标设置

    (1)框架

     

     (2)操作

     1 # *******************图标设置**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("图标操作")
     9 window.resize(500,500)
    10 
    11 btn = QPushButton(window)
    12 btn.setText("按钮")
    13 # 设置图标
    14 pixmap = QPixmap('xxx.png').scaled(50,50)
    15 icon = QIcon(pixmap)
    16 btn.setIcon(icon)
    17 # 设置图标大小
    18 size = QSize(50,50)
    19 btn.setIconSize(size)
    20 # 查看
    21 print(btn.icon())
    22 print(btn.iconSize())
    23 
    24 window.show()
    25 sys.exit(app.exec_())
    26 # *******************图标设置**********************结束
    图标设置

    4、QAbstractButton——快捷键设置

    (1)框架

    (2)操作

     1 # *******************快捷键设置**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("快捷键设置")
     9 window.resize(500,500)
    10 
    11 btn = QPushButton(window)
    12 pixmap = QPixmap('xxx.png').scaled(50,50)
    13 icon = QIcon(pixmap)
    14 btn.setIcon(icon)
    15 # 快捷键设置
    16 btn.pressed.connect(lambda :print("按钮被点击了"))
    17 # btn.setText("&abc")  # Alt + a也会触发上面的信号与槽
    18 btn.setShortcut("Alt+a") # 作用同上
    19 
    20 window.show()
    21 sys.exit(app.exec_())
    22 # *******************快捷键设置**********************结束
    快捷键设置

    5、QAbstractButton——自动重复

    (1)框架

    (2)操作

     1 # *******************自动重复**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("快捷键设置")
     9 window.resize(500,500)
    10 
    11 btn = QPushButton(window)
    12 pixmap = QPixmap('xxx.png').scaled(50,50)
    13 icon = QIcon(pixmap)
    14 btn.setIcon(icon)
    15 btn.pressed.connect(lambda :print("按钮被点击了"))
    16 # 自动重复
    17 btn.setAutoRepeat(True)
    18 btn.setAutoRepeatDelay(2000) # 初次检测延迟
    19 btn.setAutoRepeatInterval(3000) # 检测间隔
    20 
    21 window.show()
    22 sys.exit(app.exec_())
    23 # *******************自动重复**********************结束
    自动重复
     1 # *******************自动重复-案例**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 def one_plus():
     6     print("加1")
     7     num = int(btn.text()) + 1
     8     btn.setText(str(num))
     9 
    10 app=QApplication(sys.argv)
    11 
    12 window=QWidget()
    13 window.setWindowTitle("自动重复-案例")
    14 window.resize(500,500)
    15 
    16 btn = QPushButton(window)
    17 btn.setText('1')
    18 pixmap = QPixmap('xxx.png').scaled(50,50)
    19 icon = QIcon(pixmap)
    20 btn.setIcon(icon)
    21 size = QSize(50,50)
    22 btn.setIconSize(size)
    23 
    24 btn.setAutoRepeat(True)
    25 btn.setAutoRepeatInterval(1000)
    26 
    27 btn.pressed.connect(one_plus)
    28 
    29 window.show()
    30 sys.exit(app.exec_())
    31 # *******************自动重复-案例**********************结束
    案例

    6、QAbstractButton——状态:按下

    (1)框架

    (2)操作:按下,切换

     1 # *******************状态**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("状态")
     9 window.resize(500,500)
    10 
    11 btn = QPushButton(window)
    12 btn.setText('哈哈')
    13 
    14 push_btn = QPushButton(window)
    15 push_btn.setText("这是QPushButton")
    16 push_btn.move(100,100)
    17 
    18 radio_btn = QRadioButton(window)
    19 radio_btn.setText("这是QRadioButton")
    20 radio_btn.move(100,150)
    21 
    22 checkbox = QCheckBox(window)
    23 checkbox.setText("这是QCheckBox")
    24 checkbox.move(100,200)
    25 
    26 # 设置按钮按下颜色:红色
    27 push_btn.setStyleSheet("QPushButton:pressed {background-color:red}")
    28 
    29 # 把三个按钮,置为按下状态
    30 # push_btn.setDown(True)
    31 # radio_btn.setDown(True)
    32 # checkbox.setDown(True)
    33 
    34 # 检测是否可以选中
    35 print(push_btn.isCheckable())  # False  可以通过push_btn.setChecked(True)
    36 print(radio_btn.isCheckable()) # True
    37 print(checkbox.isCheckable()) # True
    38 
    39 def cao():
    40     push_btn.toggle()
    41     radio_btn.toggle()
    42     checkbox.toggle()
    43 
    44 # 切换选中与非选中
    45 btn.pressed.connect(cao)
    46 
    47 window.show()
    48 sys.exit(app.exec_())
    49 # *******************状态**********************结束
    状态

    7、QAbstractButton——排他性(性别选择)

    (1)框架

      QPushButton 默认是不可选中,不具排他性

      QRadioButton 默认是可选中,具有怕他性

      QCheckButton 默认是可选中,不具排他性

    (2)操作

     1 # *******************排他性**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("排他性")
     9 window.resize(500,500)
    10 
    11 for i in range(0,3):
    12     # QPushButton  默认是不可选中,不具排他性
    13     # QRadioButton 默认是可选中,具有怕他性
    14     # QCheckButton 默认是可选中,不具排他性
    15     btn = QPushButton(window)
    16     btn.setText('btn'+str(i))
    17     btn.move(50*i,50*i)
    18 
    19     print(btn.autoExclusive()) # 全是False
    20     btn.setAutoExclusive(True)  # 排他性
    21 
    22     print(btn.isChecked()) # 全是False,不可选中
    23     btn.setCheckable(True) # 设置为可以选中
    24 
    25 window.show()
    26 sys.exit(app.exec_())
    27 # *******************排他性**********************结束
    排他性

    8、QAbstractButton——按钮模拟点击

    (1)框架

    (2)操作

     1 # *******************模拟点击**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("按钮模拟点击")
     9 window.resize(500,500)
    10 
    11 btn = QPushButton(window)
    12 btn.setText("这是按钮")
    13 btn.move(200,200)
    14 btn.pressed.connect(lambda :print("点击了这个按钮"))
    15 
    16 # btn.click() # 模拟用户的单击
    17 # btn.animateClick(2000) # 动画点击
    18 
    19 btn2 = QPushButton(window)
    20 btn2.setText("按钮2")
    21 def test():
    22     # btn.click()
    23     btn.animateClick(1000)
    24 btn2.pressed.connect(test)
    25 
    26 window.show()
    27 sys.exit(app.exec_())
    28 # *******************模拟点击**********************结束
    按钮模拟点击

    9、QAbstractButton——可用信号

    (1)框架

    (2)操作

     1 # *******************可用信号**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 
     5 app=QApplication(sys.argv)
     6 
     7 window=QWidget()
     8 window.setWindowTitle("可用信号")
     9 window.resize(500,500)
    10 
    11 btn = QPushButton(window)
    12 btn.setText("这是按钮")
    13 btn.move(200,200)
    14 btn.setCheckable(True)
    15 # btn.pressed.connect(lambda :print("鼠标被按下了"))
    16 # btn.released.connect(lambda :print("鼠标释放了"))
    17 #
    18 # btn.clicked.connect(lambda :print("按钮被点击")) # 在按钮有效区域才可以,在按钮外释放无效
    19 btn.toggled.connect(lambda value:print("按钮选中状态发生了改变",value)) # 只有在可以选中的情况下才发生
    20 
    21 window.show()
    22 sys.exit(app.exec_())
    23 # *******************可用信号**********************结束
    可用信号

    10、QAbstractButton——设置点击有效区域

    (1)框架

    (2)操作:

     1 # *******************设置有效区域**********************开始
     2 import sys
     3 from PyQt5.Qt import *
     4 import math
     5 
     6 class Btn(QPushButton):
     7     def hitButton(self, point):
     8         # print(point)
     9         # if point.x() > self.width()/2: # 按钮右侧有效
    10         #     return True
    11         # return False
    12 
    13         # 通过给定的一个点坐标,计算与圆心的距离
    14         yuanxin_x = self.width()/2
    15         yuanxin_y = self.height()/2
    16 
    17         hit_x = point.x()
    18         hit_y = point.y()
    19 
    20         distance=math.sqrt(math.pow(hit_x-yuanxin_x,2) + math.pow(hit_y-yuanxin_y,2))
    21         # 如果距离<半径,则返回True
    22         if distance < self.width()/2:
    23             return True
    24         return False
    25 
    26     def paintEvent(self, evt):
    27         super().paintEvent(evt)
    28         painter = QPainter(self)
    29         painter.setPen(QPen(QColor(100,150,200),6))
    30         painter.drawEllipse(self.rect())
    31 
    32 app=QApplication(sys.argv)
    33 
    34 window=QWidget()
    35 window.setWindowTitle("设置有效区域")
    36 window.resize(500,500)
    37 
    38 btn = Btn(window)
    39 btn.setText("点击")
    40 btn.move(150,150)
    41 btn.resize(200,200)
    42 btn.pressed.connect(lambda :print("按钮被点击了"))
    43 
    44 window.show()
    45 sys.exit(app.exec_())
    46 # *******************设置有效区域**********************结束
    设置有效区域

    时间:2020-03-19    00:25:06

    作者(QQ):931935931

  • 相关阅读:
    比率(ratio)|帕雷托图|雷达图|轮廓图|条形图|茎叶图|直方图|线图|折线图|间隔数据|比例数据|标准分数|标准差系数|离散系数|平均差|异众比率|四分位差|切比雪夫|右偏分布|
    质量控制|样本和总体|有限总体和无限总体|样本空间与变量空间|总体变异性|
    基因共线性
    q检验|新复极差法|LSD|二因素方差分析
    Tript协议|伯尔尼公约|著作权|立法宗旨|自动保护|著作权集体管理|
    两块式开头样板
    三块式开头样板
    listening-conversation|信息简写|Generally|回答|矛盾
    Listening-lecture|主旨题|术语解释|举例原则|Crash course 哔哩哔哩
    Do jobs|permanent|secure job|Move|Look after|provide sb with sth|Move|Enjoy a good time|Learn about|Be fond of|Have a clearer idea|String quarter|Be subject to|A has little with B|Pigment
  • 原文地址:https://www.cnblogs.com/fengxb1213/p/12516996.html
Copyright © 2011-2022 走看看