zoukankan      html  css  js  c++  java
  • 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)组件有一个简单的可调节手柄。这个手柄可以前后拖动。我们可以使用这个方式来选择具体的数值。有时使用滑块条比直接输入数字或使用数值选择框更自然,在我们下面的例子中,我们将显示一个滑块条和一个标签。标签将会显示一个图像。滑块条将控制标签。

  • 相关阅读:
    开发环境之git:团队协作git工作流与常用命令
    js基础梳理-关于this常见指向问题的分析
    Idea 开发环境配置
    Mybatis-generator生成Service和Controller
    分享一个集成在项目中的REST APIs文档框架swagger
    mysql读写分离
    (转)tomcat进程意外退出的问题分析
    shell脚本切割tomcat的日志文件
    (转)Java 详解 JVM 工作原理和流程
    ThreadPoolExecutor-线程池开发的使用
  • 原文地址:https://www.cnblogs.com/qjoanven/p/7845436.html
Copyright © 2011-2022 走看看