前文
PyQt5学习笔记4 - QMainWindow
PyQt5学习笔记5 - QWidget
PyQt5学习笔记6 - QLabel
PyQt5学习笔记7 - QLineEdit
PyQt5学习笔记8 - QTextEdit
本文概述
QTextEdit
,setHtml
,setPlainText()
QAbstractButton
在任何GUI设计中,按钮都是最重要的和常用的触发动作请求方式,用来与用于进行交互操作。在PyQt中根据不同的使用场景将按钮划分为不同的表现形式。按钮的基类是QAbstractButton,提供了按钮的通用功能。QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能,不同的表现形式。
常见的按钮类包括:QPushButton
, QToolButton
, QRadioButton
和QCheckButton
。这些按钮类均继承于QAbstractButton
类。
QAbstractButton提供的状态有:
状态 | 含义 |
---|---|
isDown() |
提示按钮是否被按下 |
isChecked() |
提示按钮是否已经标记 |
isEnable() |
提示按钮是否可以被用户点击 |
isCheckAble() |
提示按钮是否可为标记的 |
setAutoRepeat() |
设置按钮是否在用户长按时可以自动重复执行 |
QAbstractButton提供的信号有:
信号 | 含义 |
---|---|
Pressed |
当鼠标指针在按钮上并按下左键时触发该信号 |
Released |
当鼠标左键被释放时触发该信号 |
Clicked |
当鼠标左键被按钮然后被释放时,或者快捷键被释放时触发该信号 |
Toggled |
当按钮的标记状态发生改变的时候触发该信号 |
QPushButton
QPushButton类继承自QAbstractButton类,其形状是厂房是,文本标题或图标可以显示在长方形上。他也是一种命令按钮,可以单击该按钮执行一些命令,或者响应一些事件。
QPushButton常用的方法
方法 | 描述 |
---|---|
setCheckable() |
设置按钮是否已经被选中,如果设置为True,则表示按钮将保持已点击和释放状态 |
toggle() |
在按钮状态之间进行切换 |
setIcon() |
设置变扭上的图标 |
setEnable() |
设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号 |
isChecked() |
返回按钮的状态,返回值为True或False |
setDefault |
设置按钮的默认状态 |
setText() |
设置按钮的显示文本 |
text() |
返回按钮的显示文本 |
实例1: QPushButton按钮的使用
import sys
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QPushButton, QApplication
class ButtonDemo(QDialog):
def __init__(self, parent=None):
super(ButtonDemo, self).__init__(parent)
layout = QVBoxLayout()
self.button1 = QPushButton('Button1')
self.button1.setCheckable(True) # 检测是否被标记(状态)
self.button1.toggle() # 切换状态
self.button1.clicked.connect(lambda: self.click_button_event(self.button1))
self.button1.clicked.connect(self.button_status)
self.button2 = QPushButton('image')
self.button2.setIcon(QIcon(QPixmap("../image/python.jpg")))
self.button2.clicked.connect(lambda: self.click_button_event(self.button2))
self.button3 = QPushButton('Disable')
self.button3.setEnabled(False)
self.button4 = QPushButton("&Close")
self.button4.setDefault(True)
self.button4.clicked.connect(lambda: self.click_button_event(self.button4))
self.setWindowTitle('ButtonDemo')
layout.addWidget(self.button1)
layout.addWidget(self.button2)
layout.addWidget(self.button3)
layout.addWidget(self.button4)
self.setLayout(layout)
@staticmethod
def click_button_event(bth):
print(f'clicked button is {bth.text()}')
def button_status(self):
if self.button1.isChecked():
print('button1 pressed')
else:
print('button1 released')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ButtonDemo()
demo.show()
sys.exit(app.exec())
QRadioButton
QRadioButton继承于QAbstractButton类,它提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项, 标签用于显示对应的文本信息。单选按钮是一种开关按钮,可以切换ON/OFF, 主要是为用户提供"多选一"的选择。
QRadioButton是单选按钮控件默认是独占的(Exclusive).对于继承自同一个父类Widget的多个单选按钮,他们属于同一个按钮组合,在单选按钮组里面,一次只能选择一个单选按钮。如果需要选择多个按钮,则需要将他们放在QGroupBox或QButtonGroup中。
当单选按钮切换ON/OFF时,就会发射toggled信号,绑定这个信号,在按钮状态发生改变的时候,触发相应的行为。
在QRadioButton中,toggle信号是切换按钮状态时发射的,而clicked信号则在每次单击单选按钮时都会发射。在实际中,一般只有状态改变时才有必要去响应,因此toggle信号更适合用于状态监控。
QRadioButton常用方法:
方法 | 描述 |
---|---|
setCheckable() |
设置按钮是否被选中,可以改变单选按钮的状态,如果设置为True,则表示单元按钮将保持已点击和释放状态 |
isChecked() |
返回单选按钮的状态,返回值是True或Flase |
setText() |
设置单元按钮的显示文本 |
text() |
返回单选按钮的显示文本 |
实例1: QRadioButton的使用
import sys
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QRadioButton, QApplication
class RadioButtonDemo(QWidget):
def __init__(self, parent=None):
super(RadioButtonDemo, self).__init__(parent)
layout = QHBoxLayout()
self.button1 = QRadioButton('Button1')
self.button1.setCheckable(True)
self.button1.toggled.connect(lambda: self.button_state(self.button1))
self.button2 = QRadioButton("Button2")
self.button2.toggled.connect(lambda: self.button_state(self.button2))
layout.addWidget(self.button1)
layout.addWidget(self.button2)
self.setLayout(layout)
self.setWindowTitle('RadioButtonDemo')
@staticmethod
def button_state(button: QRadioButton):
if button.isChecked():
print(button.text() + ' is selected')
else:
print(button.text() + ' is deselected')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = RadioButtonDemo()
demo.show()
sys.exit(app.exec())
如有侵权,请联系删除
网友评论