本文主要是介绍PyQt5基础控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、按钮
(一)普通按钮QPushButton
1.创建按钮控件
QPushButton():创建一个无父控件的按钮控件QPushButton(parent):创建控件的同时, 设置父控件QPushButton(text, parent):创建控件的同时, 设置提示文本和父控件QPushButton(icon, text, parent):创建控件的同时, 设置图标, 提示文本和父控件
2.设置快捷键
setShortCut(text)
3.设置菜单
setMenu(QMenu):设置菜单menu():获取菜单showMenu():展示菜单
4.边框是否保持扁平
setFlat(bool):设置了此属性,则除非按下按钮,否则大多数样式都不会绘制按钮背景isFlat():获取当前按钮边框是否扁平
5.设置按钮是否被选中
setCheckable()设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态
6.设置按钮是否可以使用
setEnabled()设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号
7.返回按钮的状态
isChecked()返回按钮的状态,返回值为True或者False
8.设置按钮的默认状态
setDefault()设置按钮的默认状态
9.设置按钮名称
setText()设置按钮的显示文本
10.返回按钮名称
text()返回按钮的显示文本
11.在按钮状态之间进行切换
toggle()在按钮状态之间进行切换
(二)单选按钮QRadioButton
1.简介
在 PyQt5 这个强大的 Python GUI 框架中,QRadioButton 是一个常见的控件,用于表示一个可以被用户选择或取消选择的单选按钮。与 QCheckBox 不同,QRadioButton 允许用户从一组选项中选择一个,而不是选择多个。这种控件在创建用户友好的界面时非常有用,特别是在需要用户从一系列选项中进行选择时。
PyQt5 的 QRadioButton
控件继承自 QAbstractButton
类,因此它拥有许多与按钮相关的通用方法和属性。下面我们将通过一些示例代码来介绍它的基本用法。
2.属性和方法
(1)设置按钮是否被选中
可以改变单选钮的选中状态,如果设置为True,则表示单选钮将保持已点击或释放状态。
setCheckable()
(2)返回单选按钮的状态。设置返回值True或False
isChecked()
(3)设置单选按钮的显示文本
setText()
(4)返回单选钮的显示文本
text()
(5)设置单选按钮的工具提示
setToolTip(str)
(6)切换单选按钮的选中状态
toggle()
3.方法
clicked
(三)复选框QCheckBox
1.QCheckBox复选框的三种状态:
Qt.Checked: 值为2,表示组件被选中
Qt.PartiallyChecked: 值为1,表示组件被半选中
Qt.Unchecked: 值为0,表示组件没有被选中
2.属性和方法
(1)设置复选框的显示文本;
setText()
(2)设置复选框是否可用,设置为False时,复选框不可用;
setEnabled()
(3)返回复选框的显示文本;
text()
(4)返回复选框的选中状态;
isChecked()
(5)设置复选框的状态,设置为True表示选中,False表示取消选中的复选框;
setChecked()
(6)设置复选框为一个三态复选框
setTriState()
(7)三态复选框的状态设置,具体设置见三态复选框状态表。
setCheckState()
3.信号
stateChanged 选中或清除选中时, 发射此信号
(四)工具按钮QToolButton
1.简介
2.方法和属性
(1)创建工具按钮
tool_button = QToolButton(window)
(2)设置文本
setText()
(3)设置图标
setIcon()
(4)设置图标大小
tool_button.setIconSize(QtCore.QSize(32, 32))
(5)设置工具提示
tool_button.setToolTip("这是一个工具按钮")
(6)设置按钮样式
# 只显示图标
tool_button.setToolButtonStyle(Qt.ToolButtonIconOnly)# 只显示文本
tool_button.setToolButtonStyle(Qt.ToolButtonTextOnly)# 文本显示在图标旁边
tool_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)# 文本显示在图标下方
tool_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)# 遵循系统风格
tool_button.setToolButtonStyle(Qt.ToolButtonFollowStyle)
(7)设置菜单
setMenu()
(8)设置弹出菜单显示模式
# 设置弹出菜单的显示模式
# Qt.DelayedPopup:当按钮被点击并释放后显示菜单
# Qt.InstantPopup:当按钮被点击时立即显示菜单
# Qt.MenuButtonPopup:按钮旁边始终显示一个小的箭头,点击箭头时显示菜单
tool_button.setPopupMode(Qt.DelayedPopup)
(9)可检查状态
setCheckable()
示例代码:
tool_button.setCheckable(True)# 检查按钮是否被选中
if tool_button.isChecked():print("按钮被选中")
else:print("按钮未被选中")# 也可以通过点击信号来切换状态
tool_button.clicked.connect(lambda: print(f"按钮状态:{'选中' if tool_button.isChecked() else '未选中'}"))
(10)设置显示的箭头类型
# 无箭头
tool_button.setArrowType(Qt.NoArrow)# 向上箭头
tool_button.setArrowType(Qt.UpArrow)# 向下箭头
tool_button.setArrowType(Qt.DownArrow)# 向左箭头
tool_button.setArrowType(Qt.LeftArrow)# 向右箭头
tool_button.setArrowType(Qt.RightArrow)
(11)自定义大小与布局
QToolButton
的大小默认是自动调整的,但你也可以通过setFixedSize()
或setGeometry()
方法来手动设置其大小。此外,还可以结合布局管理器(如QHBoxLayout
、QVBoxLayout
等)来更好地控制QToolButton
的布局。
示例代码:
# 设置固定大小
tool_button.setFixedSize(100, 50)# 或者在布局中设置
# 假设你有一个布局实例layout
# layout.addWidget(tool_button)
(12)设置自动提升效果
tool_button.setAutoRaise(True)
QToolButton
支持自动浮起效果,即当鼠标悬停在按钮上时,按钮会呈现3D效果。通过setAutoRaise()
方法可以设置是否启用此效果。
3. 信号
学习资料来源:【python】PyQt5中QToolButton的详细用法教学与应用实战_pyqt qtoolbutton-CSDN博客
二、QLabel
1.简介
QLabel是一个用于显示文本和图像的简单控件。通过掌握它的各种特性和功能,你可以使你的PyQt5应用更加丰富和互动。无论是显示数据、响应用户操作还是增强界面美观,QLabel都是一个值得深入了解和使用的工具。
2.属性和方法
(1)设置标签显示的文本内容
setText(text)
(2)设置标签显示的图像内容
setPixmap(pixmap)
(3)设置文本在标签中的对齐方式
setAlignment(alignment)
(4)设置标签的样式表
setStyleSheet(styleSheet)
(5)清除标签的内容
clear()
(6)设置自动换行
setWordWrap(True)
(7)设置提示文本
setToolTip
(8)设置文本缩进值
setIndent()
(9)返回所选择的字符
selectedText()
(10)设置 QLabel 的助记符及 buddy(伙伴)
即使用 QLabel 快捷键,会在快捷键后将焦点设置到其 buddy 上;buddy 可以是任意 widget 控件。使用 setBuddy(QWidget*) 设置,其 QLabel 必须是文本内容,并且使用“&”符号设置了助记符
setBuddy()
setBuddy():可以将两个控件进行关联,通过快捷键将QLable的焦点关联到对应控件上,使用最多的就是QLineEdit()控件,示例如下:
label = QLabel('&Password', self)ling_edit = QLineEdit(self)label.setBuddy(ling_edit)
(11)
(12)
3.信号
linkActivated 当标签中的链接被点击时发射linkHovered 当鼠标悬停在带有链接的文本上时发射customContextMenuRequested 当用户请求上下文菜单时发射
三、QLineEdit
1.简介
学习资料:【python】PyQt5中单行文本输入控件QLineEdit的详细解析与应用实战_pyqt5 qlineedit-CSDN博客
2.属性和方法
(1)设置和获取文本
setText(str):用于设置QLineEdit控件中的文本内容。
text():用于获取当前控件中的文本内容。
(2)清除文本
clear():用于清除QLineEdit控件中的文本内容
(3)设置输入模式
setEchoMode(EchoMode):用于设置QLineEdit控件的输入模式,如正常模式、密码模式等。
echoMode():用于获取当前的输入模式。
示例代码:
self.line_edit.setEchoMode(QLineEdit.Password)
mode = self.line_edit.echoMode()
print(mode) # 输出: 2 (表示密码模式)
(4)设置文本对齐
setAlignment(Qt.Alignment):用于设置QLineEdit控件中文本的对齐方式,如左对齐、右对齐、居中对齐等。
alignment():用于获取当前的对齐方式。
(5)设置占位符文本
setPlaceholderText(str):用于设置QLineEdit控件的占位符文本,即当控件为空时显示的提示文本。
placeholderText():用于获取当前的占位符文本。
示例代码:
self.line_edit.setPlaceholderText("请输入文本...")
placeholder = self.line_edit.placeholderText()
print(placeholder) # 输出: 请输入文本...
3.方法
(1)文本改变信号
textChanged(str):每当QLineEdit中的文本发生变化时,都会发出此信号。注意,此信号的参数是改变后的文本,但在实践中,通常不需要使用此参数,因为你可以直接从QLineEdit对象中获取文本。
def on_text_changed():text = self.line_edit.text()print(f"文本已改变: {text}")self.line_edit.textChanged.connect(on_text_changed)
(2)编辑开始和结束信号
editingFinished():当QLineEdit失去焦点(即用户完成编辑)时,会发出此信号。
editingStarted():虽然QLineEdit没有直接提供editingStarted信号,但你可以通过textChanged信号和检查文本是否为空来模拟这个行为。
def on_editing_finished():text = self.line_edit.text()print(f"编辑完成: {text}")self.line_edit.editingFinished.connect(on_editing_finished)# 模拟editingStarted的示例
def on_text_changed_for_start():if self.line_edit.text(): # 如果文本非空,则可能视为编辑开始print("编辑开始")# 注意:这里可能需要额外的逻辑来确保只在真正开始编辑时触发
# 因为textChanged会在每次文本变化时触发,包括编辑开始时
(3)验证输入
虽然QLineEdit本身不直接提供输入验证的功能,但你可以通过结合信号和槽来实现。例如,你可以在editingFinished信号的槽函数中检查文本是否符合特定格式,如果不符合,则显示错误信息或重置文本。
def validate_input():text = self.line_edit.text()if not text.isdigit(): # 假设我们只接受数字self.line_edit.setText("请输入数字!")# 可以选择性地显示一个错误信息给用户self.line_edit.editingFinished.connect(validate_input)
四、QTextEdit
1.简介
QTextEdit是PyQt中用于显示和编辑文本的强大组件之一。它提供了丰富的功能,可以显示普通文本、富文本和HTML文本,并支持各种格式的编辑和交互。
2.属性和方法
(1)设置文本内容
textEdit.setText("Hello, PyQt5!")
(2)设置HTML格式的文本内容
textEdit.setHtml("<h1>Hello, PyQt5!</h1>")
(3)获取纯文本内容
text = textEdit.toPlainText()
(4)获取HTML格式的内容
html = textEdit.toHtml()
(5)清除文本内容
textEdit.clear()
(6)在光标位置插入纯文本
textEdit.insertPlainText("Inserted Text")
(7)在光标位置插入HTML格式的文本
textEdit.insertHtml("<b>Inserted</b> Text")
(8)在文本中查找指定文本,并将光标移到找到的位置
textEdit.find("search text")
(9)选择所有文本
textEdit.selectAll()
3.信号
1.cursorPositionChanged: 当光标位置发生变化时发射
textEdit.cursorPositionChanged.connect(handleCursorPositionChanged)
2.textChanged: 当文本内容发生改变时发射
textEdit.textChanged.connect(handleTextChanged)
3.copyAvailable(available: bool): 当有文本可复制时发射
textEdit.copyAvailable.connect(handleCopyAvailable)
4.redoAvailable(available: bool): 当可以执行重做操作时发射
textEdit.redoAvailable.connect(handleRedoAvailable)
5.undoAvailable(available: bool): 当可以执行撤销操作时发射
textEdit.undoAvailable.connect(handleUndoAvailable)
五、QComboBox
1.简介
QComboBox对象显示一个下拉列表可供选择,是一个集按钮和下拉选项于一体的控件,也称做下拉列表框。
2.属性和方法
(1)增加单个选项内容
addItem()
(2)增加多个, 参数为列表
addItems()
(3)删除下拉列表中的所有选项
Clear()
(4)返回下拉列表中的所有项目数量
Count()
(5)返回当前选中项的文本
currentText()
(6)获取索引为i的item文本
itemText(i)
(7)设置索引为i的item文本
setItemText(i)
(8)返回当前选中项的索引
currentIndex
3.信号
(1)currentIndexChanged()
下拉选项的索引发生变化时发射,如果本次选中的和之前的相同,则不会发射
(2)activated()
选中一个下拉选项的时候发射,不管是否和上次相同
(3)highlight()
不管焦点停留在哪个上面都会触发此信号,但是返回的currentText仍为蓝色显示的条目,而不是光标移动到的条目,传递的第二个参数是光标移动到的index
六、QGroupBox
这篇关于PyQt5基础控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!