概述
QAbstractButton
所有按钮类的父类,为抽象类
提供如下状态
isDown() | 提示按钮是否被按下 |
isChecked() | 提示按钮是否已经标记 |
isEnable() | 提示按钮是否可以被用户点击 |
isCheckAble() | 提示按钮是否为可标记的 |
setAutoRepeat() | 设置按钮是否在用户长按时可以自动重复执行 |
提供如下信号
Pressed | 当鼠标指针在按钮上并按下左键时触发该信号 |
Rcleased | 当鼠标左键被释放时触发该信号 |
Clicked | 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号 |
Toggled | 当按钮的标记状态发生改变时触发该信号 |
QPushButton
常用方法
setCheckable() | 设置按钮是否已经被选中,如果设置为True,则表示按钮将保持已点击和释放状态 |
toggle() | 在按钮状态之间进行切换 |
setIcon() | 设置按钮上的图标 |
setEnabled() | 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号 |
isChecked() | 返回按钮的状态。返回值为True或False |
setDefault() | 设置按钮的默认状态 |
setText() | 设置按钮的显示文本 |
text() | 返回按钮的显示文本 |
代码示例
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")
# 设置按钮已经被选中,保持已点击和释放状态
self.btn1.setCheckable(True)
# 在按钮状态之间进行切换
self.btn1.toggle()
# 通过lambda的方式来传递额外的参数btn1,将clicked信号发送给槽函数whichbtn()
self.btn1.clicked.connect(lambda: self.whichbtn(self.btn1))
# 当点击这个按钮时,将clicked信号发送给槽函数btnstate(),通过btn.isChecked
# 来获得按钮是否被点击或释放的状态。
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")
# 按钮禁用
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_())
QRadioButton
setCheckable() | 设置按钮是否已经被选中,可以改变单选钮的选中状态,如果设置为True,则表示单选钮将保持已点击和释放状态 |
isChecked() | 返回单选钮的状态。返回值为True或False |
setText() | 设置单选钮的显示文本 |
text() | 返回单选钮的显示文本 |
代码示例
# -*- 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)
# 定义一个容器
select_gb = QGroupBox("123")
layout1 = QHBoxLayout()
self.btn1 = QRadioButton("Button1", select_gb)
self.btn1.setChecked(True)
self.btn1.toggled.connect(lambda: self.btnstate(self.btn1))
layout1.addWidget(self.btn1)
self.btn2 = QRadioButton("Button2", select_gb)
self.btn2.toggled.connect(lambda: self.btnstate(self.btn2))
layout1.addWidget(self.btn2)
self.btn3 = QRadioButton("Button3", select_gb)
self.btn3.toggled.connect(lambda: self.btnstate(self.btn3))
layout1.addWidget(self.btn3)
select_gb.setLayout(layout1) # 定义GroupBox的布局管理器
select_gb2 = QGroupBox()
layout2 = QHBoxLayout()
self.btn4 = QRadioButton("Button4")
layout2.addWidget(self.btn4)
self.btn5 = QRadioButton("Button5")
layout2.addWidget(self.btn5)
select_gb2.setLayout(layout2)
layout3 = QVBoxLayout()
layout3.addWidget(select_gb)
layout3.addWidget(select_gb2)
self.setLayout(layout3)
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 btn.text() == "Button3":
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_())
QCheckBox
带文本标签的复选框
常用方法
setChecked() | 设置复选框的状态,设置为True时表示选中复选框,设置为False时表示取消选中复选框 |
setText() | 设置复选框的显示文本 |
text() | 返回复选框的显示文本 |
isChecked() | 检查复选框是否被选中 |
setTriState() | 设置复选框为一个三态复选框 |
三台复选框的三种状态
名称 | 值 | 含义 |
Qt.Checked | 2 | 组件没有被选中(默认值) |
Qt.PartiallyChecked | 1 | 组件被半选中 |
Qt.Unchecked | 0 | 组件被选中 |
代码示例
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(False)
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)
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):
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_())
最后
以上就是哭泣御姐为你收集整理的PYQT5(07)-基本窗口控件-按钮类控件的全部内容,希望文章能够帮你解决PYQT5(07)-基本窗口控件-按钮类控件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复