pyqt5-组件

组件(widgets)是构建一个应用的基础模块。PyQt5有广泛的各式各样的组件,包含:复选按钮(QCheckBox),切换按钮(ToggleButton),滑块条(QSlider),进度条(ProgressBar),日历组件(QCalendarWidget),像素图(QPixmap),单行文本框(QLineEdit)和下拉列表框(QComboBox)等。

1、复选框

复选框组件有两种状态:选中和未选中。它是由一个选择框和一个标签组成的。一个应用中,复选框是典型的用来代表有效或无效状态的组件。

import sys
from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication
from PyQt5.QtCore import Qt


class CheckBox(QWidget):
	def __init__(self):
		super().__init__()

		self.initUI()

	def initUI(self):

		cb = QCheckBox('Show title', self) # QCheckBox类的构造方法。
		cb.move(20, 20)
		cb.toggle() # 需要设置窗口标题,所以必须选中复选框。如果不选中复选框,默认情况下复选框不会被选中,
		# 所以窗口标题也不会被设置。
		cb.stateChanged.connect(self.changeTitle) # 将自定义的changeTitle()槽方法和stateChanged信号连接。
		# changeTitle()方法将用于切换窗口标题。

		self.setGeometry(300, 300, 250, 150)
		self.setWindowTitle('QCheckBox')
		self.show()

	# 复选框组件的状态会传入changeTitle()方法的state参数。如果复选框被选中,我们设置窗口标题。
	# 否则,我们把窗口标题设置成一个空字符串。
	def changeTitle(self, state):

		if state == Qt.Checked:
			self.setWindowTitle('QCheckBox')
		else:
			self.setWindowTitle('')

def main():

	app = QApplication(sys.argv)
	ex = CheckBox()
	sys.exit(app.exec_())


if __name__ == '__main__':

	main()

在我们的例子中,我们创建了一个复选框,用来切换窗口标题。

2、切换按钮

切换按钮是QPushButton的特殊模式。切换按钮有两种状态:按下和没有按下。我们可以通过点击它在两种状态之间切换。下面的列子展示了切换按钮合适出现的情景。

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton,
							 QFrame, QApplication)
from PyQt5.QtGui import QColor


class SwitchButton(QWidget):
	def __init__(self):
		super().__init__()

		self.initUI()

	def initUI(self):

		self.col = QColor(0, 0, 0) # 初始化,让RGB值为黑色。

		# 要创建切换按钮,就要创建QPushButton,并且调用setCheckable()方法让它可被选中。
		redb = QPushButton('Red', self)
		redb.setCheckable(True)
		redb.move(10, 10)

		redb.clicked[bool].connect(self.setColor) # 把clicked信号连接到我们定义的方法上。
		# 使用clicked信号来操作布尔值。

		redb = QPushButton('Green', self)
		redb.setCheckable(True)
		redb.move(10, 60)

		redb.clicked[bool].connect(self.setColor)

		blueb = QPushButton('Blue', self)
		blueb.setCheckable(True)
		blueb.move(10, 110)

		blueb.clicked[bool].connect(self.setColor)

		self.square = QFrame(self)
		self.square.setGeometry(150, 20, 100, 100)
		self.square.setStyleSheet("QWidget { background-color: %s }" %
								  self.col.name())

		self.setGeometry(300, 300, 280, 170)
		self.setWindowTitle('Toggle button')
		self.show()

	def setColor(self, pressed):

		source = self.sender() # 获得发生状态切换的按钮。

		if pressed:
			val = 255
		else:
			val = 0

		if source.text() == "Red": # 在这种情况下,如果发生切换的是red按钮,我们更新RGB值中的红色部分的颜色值。
			self.col.setRed(val)
		elif source.text() == "Green":
			self.col.setGreen(val)
		else:
			self.col.setBlue(val)

		# 使用样式表来改变背景颜色。
		self.square.setStyleSheet("QFrame { background-color: %s }" %
								  self.col.name())


if __name__ == '__main__':
	app = QApplication(sys.argv)
	ex = SwitchButton()
	sys.exit(app.exec_())

在我们的例子中,我们创建了三个切换按钮和一个QWidget组件。我们把QWidget组件的背景颜色设置为黑色。切换按钮将在红色,绿色和蓝色的RGB值部分进行切换。QWidget组件的背景颜色将取决于哪一个切换按钮被按下。

3、滑块条

滑块条(QSlider)组件有一个简单的可调节手柄。这个手柄可以前后拖动。我们可以使用这个方式来选择具体的数值。有时使用滑块条比直接输入数字或使用数值选择框更自然,在我们下面的例子中,我们将显示一个滑块条和一个标签。标签将会显示一个图像。滑块条将控制标签。

 

转载于:https://www.cnblogs.com/qjoanven/p/7845436.html

### PyQt5pyqt5-tools 和 sip 的安装与配置 在 Python 环境中,PyQt5 是一个功能强大的 GUI 库,而 pyqt5-tools 提供了额外的工具支持(如 Designer),sip 则是 PyQt5 的底层依赖。以下是关于如何正确安装和配置这些组件的详细信息。 #### 安装步骤 为了确保兼容性并避免版本冲突,建议按照以下顺序进行安装: 1. **安装 PyQt5-sip** PyQt5-sip 是 PyQt5 的基础依赖,负责将 C++ 代码绑定到 Python 中。可以通过以下命令安装指定版本的 sip: ```bash python -m pip install PyQt5-sip==4.19.19 ``` 这里选择的版本号 `4.19.19` 已被验证与 PyQt5 版本兼容[^1]。 2. **安装 PyQt5** 安装 PyQt5 的具体版本时,需根据所使用的 Python 版本选择合适的版本号。例如,对于 Python 3.8.2,推荐使用 PyQt5-5.12.3 或 PyQt5-5.15.0(具体取决于操作系统和平台)。以下为示例命令: ```bash python -m pip install PyQt5==5.12.3 ``` 如果需要更高版本(如 PyQt5-5.15.0),可以使用以下命令: ```bash python -m pip install PyQt5==5.15.0 ``` 注意:高版本的 PyQt5 需要确保与当前 Python 版本及操作系统兼容[^2]。 3. **安装 pyqt5-tools** pyqt5-tools 包含了 PyQt5 的开发工具,例如 Qt Designer。同样需要指定版本号以保证兼容性: ```bash python -m pip install pyqt5-tools==5.12.3.1.5 ``` 如果使用的是 PyQt5-5.15.0,则可以选择对应的 pyqt5-tools 版本(如 `pyqt5-tools==5.15.x`)[^1]。 #### 验证安装 安装完成后,可以通过以下脚本验证 PyQt5 是否正常工作: ```python import sys from PyQt5 import QtWidgets, QtCore app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QWidget() widget.resize(400, 400) widget.setWindowTitle("This is a demo for PyQt5 widget.") widget.show() exit(app.exec_()) ``` 运行上述代码后,如果弹出一个标题为 "This is a demo for PyQt5 widget." 的窗口,则说明 PyQt5 已成功安装并配置[^3]。 #### 常见问题及解决方法 1. **版本不匹配问题** 如果在安装过程中遇到类似 `ERROR: Could not find a version that satisfies the requirement` 的错误,可能是由于所选版本与当前 Python 版本或操作系统不兼容。建议查阅 [PyQt5 官方文档](https://www.riverbankcomputing.com/software/pyqt/intro) 获取支持的版本列表。 2. **缺少 sip 模块** 如果在导入 PyQt5 时提示 `ModuleNotFoundError: No module named 'sip'`,则需要重新检查 sip 的安装情况,并确保其版本与 PyQt5 兼容。 3. **pyqt5-tools 无法启动 Designer** 如果安装了 pyqt5-tools 但无法找到 Qt Designer,可能是因为路径未正确配置。可以在安装目录中查找 `designer.exe` 并手动添加到系统环境变量中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值