控件是应用程序的基础构件。PyQt5具有类目广泛的各种控件,包括按钮、复选框、滑动条、列表框等。在本节教程中,我们将学习几个很有用的控件:QCheckBox、ToggleButton、QSlider、QProgressBar和QCalendarWidget。
QCheckBox(复选框)
QCheckBox(复选框)是有打开和关闭两种状态的控件。它是一个带有勾选框的Label(标签)。复选框常用于表示程序中可以启用或禁用的功能。
import sys
from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication
from PyQt5.QtCore import Qt
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
cb = QCheckBox('Show title', self)
cb.move(20, 20)
cb.toggle()
cb.stateChanged.connect(self.changeTitle)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('QCheckBox')
self.show()
def changeTitle(self, state):
if state == Qt.Checked:
self.setWindowTitle('QCheckBox')
else:
self.setWindowTitle('')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在这个例子中我们创建了一个可以切换窗体标题的复选框。
cb = QCheckBox('Show title', self)
这是QCheckBox的构造器。
cb.toggle()
因为我们已经设置了窗体的标题,所以需要勾选复选框。窗体标题默认没有设置,复选框也没有勾选。
cb.stateChanged.connect(self.changeTitle)
我们将自定义的changeTitle()方法连接到stateChanged信号。这个方法会切换窗体的标题。
def changeTitle(self, state):
if state == Qt.Checked:
self.setWindowTitle('QCheckBox')
else:
self.setWindowTitle('')
复选框的状态经由state参数传入changeTitle()方法。在勾选复选框时设置窗体标题,取消勾选时就将标题设为空字符串。
ToggleButton(切换按钮)
ToggleButton是QPushButton的一种特殊模式。它是一个有两种状态的按钮:按下与未按下。通过点击在这两种状态间来回切换。这种功能在某些场景会很实用。
import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame, QApplication)
from PyQt5.QtGui import QColor
class Example(QWidget):
def __init__