QLabel標簽
功能:在界面上顯示文字、圖片、鏈接等
接口:
方法 | 描述 |
setText() | 設置顯示的內容 |
setAlignment() | 設置文字對齊方式 |
setToolTip() | 設置提示信息 |
setPixmap() | 設置顯示內容為圖片 |
setOpenExternalLinks() | 允許訪問鏈接,打開瀏覽器,默認非使能 |
信號:
信號 | 描述 |
linkActivated | 點擊標簽中的超鏈接,且setOpenExternalLinks為true時觸發 |
linkHovered | 當鼠標滑過標簽中的超鏈接時觸發 |
QLineEdit
功能:單行文本輸入框
接口:
方法 | 描述 |
setAlignment() | 設置內容對齊方式 |
clear() | 清空 |
setPlaceholderText() | 顯示默認內容 |
setMaxLength() | 設置運行輸入的最大長度 |
setReadOnly() | 設置內容只讀 |
setText() | 設置文本框內容 |
Text() | 返回文本框內容 |
selectAll() | 全選 |
setFocus() | 獲取焦點 |
setEchoMode() | 設置顯示的內容格式: QLineEdit.Normal:正常顯示所有字符,默認選項 QLineEdit.NoEcho:不顯示任何字符 QLineEdit.Password:顯示與平台相關的掩碼字符,不顯示實際輸入內容 QLineEdit.PasswordEchoOnEdit:在編輯時顯示字符 |
setInputMask() | 設置掩碼 |
setValidator() | 設置允許輸入的內容: QIntValidator:限制輸入整型 QDoubleValidator:限制輸入浮點數 QRegexpValidator:限制輸入符合正則表達式 |
信號:
信號 | 描述 |
selectionChanged | 選中的內容改變時觸發 |
textChanged | 修改文本內容時觸發 |
editingFinished | 文本編輯結束時觸發 |
QTextEdit
功能:顯示多行文本、html文檔
接口:
方法 | 描述 |
setPlainText() | 設置多行文本框內容 |
toPlainText() | 返回多行文本框內容 |
setHtml() | 設置內容為html文檔 |
toHtml() | 返回多行文本框內容 |
clear() | 清空 |
信號:與單行文本框類似
QAbstractButton
功能:按鈕的公共基礎類,不能直接實例化,主要提供按鈕的通用功能
狀態:按鈕具有幾種狀態,可以相互切換
狀態 | 含義 |
isDown() | 按鈕是否被按下 |
isChecked() | 按鈕是否被標記 |
isEnable() | 按鈕是否可以被用戶點擊 |
isCheckAble() | 按鈕是否可被標記 |
setAutoRepeat() | 按鈕在用戶長按時,是否可以自動重復執行 |
信號:
信號 | 描述 |
Pressed | 按鈕被按下時觸發 |
Released | 按鈕被彈起時觸發 |
Clicked | 按鈕被按下且彈起時觸發 |
Toggled | 按鈕標記狀態改變時觸發 |
QPushButton
功能:單擊按鈕
接口:
方法 | 描述 |
setCheckable() | 設置按鈕是否被選中。true或false。 |
toggle() | 在按鈕狀態之間切換 |
setIcon() | 設置按鈕圖標 |
setEnable() | 設置按鈕是否可用。true或false。 |
isChecked() | 返回按鈕的選中狀態 |
setText() | 設置按鈕顯示文本 |
text() | 獲取顯示文本 |
QRadioButton
功能:單選按鈕,提供多選一的功能
說明:繼承之同一個父類的單選按鈕,默認多個單選按鈕屬於同一組;如果要實現多組,需要使用QGroupBox或QButtonGroup
接口:
方法 | 描述 |
setCheckAble() | 設置按鈕是否被選中 |
isChecked() | 返回按鈕的狀態 |
setText() | 設置顯示文本 |
text() | 返回顯示文本 |
QCheckBox
功能:復選框,提供多選多的功能
接口:
方法 | 描述 |
setChecked | 設置復選框狀態 |
setText | 設置顯示文本 |
text | 返回顯示文本 |
isChecked | 檢查復選框是否被選中 |
QComboBox
功能:下拉框
接口:
方法 | 描述 |
addItem() | 添加一個下拉選項 |
addItems() | 從列表中添加下拉選項 |
clear() | 清空 |
count() | 返回下拉選項的數目 |
currentText() | 返回選中選項的文本 |
itemText(i) | 獲取索引為i的選項文本 |
currentIndex() | 返回選中的索引 |
setItemText(index, text) | 設置索引i的內容為text |
QSpinBox/QDoubleSpinBox
功能:計數器,允許用戶選中一個值(整型或浮點型)
接口:
方法 | 描述 |
setMinimum() | 設置計數器的最小值 |
setMaximum() | 設置計數器的最大值 |
setRange() | 設置計數器的最大值、最小值以及步長 |
setValue() | 設置計數器的當前值 |
Value() | 獲取計數器的當前值 |
setSingleStep() | 設置計數器步長 |
信號:
信號 | 描述 |
valueChanged | 計數器值改變時觸發 |
QProgressBar
功能:進度條
接口:
方法 | 描述 |
setRange() | 設置范圍 |
setMinimum() | 設置下限 |
setMaximum() | 設置上限 |
setValue() | 設置進度條的值 |
reset() | 進度條復位 |
QSlider
功能:滑動條,通過滑動的方式選擇值,比計數器更加方便自然
接口:
方法 | 描述 |
setMinimum() | 設置滑動條最小值 |
setMaximum() | 設置滑動條最大值 |
singleStep() | 設置步長 |
setValue() | 設置滑動條當前值 |
Value() | 獲取當前值 |
setTickInterval() | 設置刻度間隔 |
setTickPosition() | 設置刻度的樣式 QSlider.NoTicks:不繪制刻度 QSlider.TicksBothSides:在滑塊的兩側繪制刻度 QSlider.TicksAbove:在滑塊上方繪制刻度線 QSlider.TicksBelow:在滑塊下方繪制刻度線 QSlider.TicksLeft:在滑塊左側繪制刻度線 QSlider.TicksRight:在滑塊右側繪制刻度線 |
信號:
信號 | 描述 |
valueChanged | 當滑塊的值發生變化時觸發 |
sliderPressed | 當滑塊被按下時觸發 |
sliderMoved | 當滑塊被拖動時觸發 |
sliderReleased | 當滑塊彈起時時觸發 |
QCalendar
功能:日歷控件
接口:
方法 | 描述 |
setDateRange() | 設置可供選擇的日期范圍 |
setFirstDayofWeek() | 設置星期的第一天,默認是星期天 |
setMinimumDate() | 設置最大日期 |
setMaxmumDate() | 設置最小日期 |
setSelectDate() | 設置一個QData對象,作為當前日期空間所選定的日期 |
maximumDate() | 獲取最大日期 |
minimumDate() | 獲取最小日期 |
selectedData() | 獲取當前選定的日期 |
setGridvisible() | 設置容器空間是否顯示網格 |
信號:
信號 | 描述 |
clicked(QtCore.QDate) | 選定一個日期時觸發 |
QDateTimeEdit
功能:允許用戶編輯日期時間的控件,可以使用鍵盤和上下箭頭來增加和減少日期的時間值
接口:
方法 | 描述 |
setDisplayFormat() | 設置日期時間格式: yyyy:年 MM:月 dd:日 HH:小時 mm:分鍾 ss:秒 |
setMinimumDate() | 設置最小日期 |
setMaxmumDate() | 設置最大日期 |
time() | 返回編輯的時間 |
date() | 返回編輯的日期 |
信號:
信號 | 描述 |
dateChanged | 日期改變時觸發 |
dateTimeChanged | 日期或時間改變時都會觸發(優先) |
timeChanged | 時間改變時觸發 |
例子
1.將QLineEdit輸入的內容顯示到QLabel上
import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QPalette from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit class MyWidget(QWidget): def __init__(self): super(MyWidget, self).__init__() # 初始化label self.label = QLabel(self) self.label.resize(100, 20) self.label.move(10, 10) self.label.setAutoFillBackground(True) self.palette = QPalette() self.palette.setColor(QPalette.Window, Qt.green) self.label.setPalette(self.palette) # 初始化lineEdit self.lineEdit = QLineEdit(self) self.lineEdit.setPlaceholderText('please enter') self.lineEdit.resize(100, 20) self.lineEdit.move(10, 40) # 綁定textChanged到方法 self.lineEdit.textChanged.connect(self.syncToLabel) # 將lineEdit輸入的內容顯示到標簽上 def syncToLabel(self, msg): self.label.setText(msg) if __name__ == '__main__': app = QApplication(sys.argv) w = MyWidget() w.resize(500, 300) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_())
2.多種按鈕
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCheckBox, QRadioButton, QGroupBox, QVBoxLayout, \ QHBoxLayout class MyWidget(QWidget): def __init__(self): super(MyWidget, self).__init__() # button self.button = QPushButton(self) self.button.move(10, 10) self.button.setText('按鈕') self.button.clicked.connect(self.onButtonClicked) # radio self.radio1 = QRadioButton("Radio button 1") self.radio2 = QRadioButton("Radio button 2") self.radio3 = QRadioButton("Radio button 3") vbox = QVBoxLayout() vbox.addWidget(self.radio1) vbox.addWidget(self.radio2) vbox.addWidget(self.radio3) vbox.addStretch(1) radioGroup = QGroupBox(self) radioGroup.setLayout(vbox) radioGroup.move(10, 50) self.radio1.clicked.connect(self.onRadioClicked) self.radio2.clicked.connect(self.onRadioClicked) self.radio3.clicked.connect(self.onRadioClicked) # checkBox self.checkBox1 = QCheckBox("check box 1") self.checkBox2 = QCheckBox("check box 2") self.checkBox3 = QCheckBox("check box 3") hbox = QHBoxLayout() hbox.addWidget(self.checkBox1) hbox.addWidget(self.checkBox2) hbox.addWidget(self.checkBox3) hbox.addStretch(1) checkGroup = QGroupBox(self) checkGroup.setLayout(hbox) checkGroup.move(10, 150) self.checkBox1.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox1)) self.checkBox2.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox2)) self.checkBox3.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox3)) def onButtonClicked(self): print('button clicked') def onRadioClicked(self): print('radio clicked') if self.radio1.isChecked(): print('radio1 checked') elif self.radio2.isChecked(): print('radio2 checked') elif self.radio3.isChecked(): print('radio3 checked') def onCheckClicked(self, checkBox): print('check clicked') print(checkBox.text()) if __name__ == '__main__': app = QApplication(sys.argv) w = MyWidget() w.resize(500, 300) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_())
3.通過點擊設置值
import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QFont from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QSpinBox, QSlider class MyWidget(QWidget): def __init__(self): super(MyWidget, self).__init__() # comboBox self.com = QComboBox(self) self.com.move(10, 10) self.com.addItem('one') self.com.addItem('two') self.com.addItem('three') self.com.currentIndexChanged.connect(self.onChange) # spinBox self.spin = QSpinBox(self) self.spin.resize(100, 30) self.spin.move(10, 50) self.spin.setRange(10, 50) self.spin.setSingleStep(2) self.spin.setValue(25) self.spin.valueChanged.connect(self.onSpinChange) # slider self.slider = QSlider(Qt.Horizontal) self.slider.setParent(self) self.slider.resize(300, 20) self.slider.move(10, 100) self.slider.setRange(50, 150) self.slider.setTickInterval(5) self.slider.setValue(50) self.slider.setTickPosition(QSlider.TicksBelow) self.slider.setFont(QFont('Arial', 18)) self.slider.valueChanged.connect(self.onSliderChange) def onChange(self, index): print(self.com.itemText(index)) def onSpinChange(self, value): print(value) def onSliderChange(self, value): print(value) if __name__ == '__main__': app = QApplication(sys.argv) w = MyWidget() w.resize(500, 300) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_())
4.日期時間選擇
import sys from PyQt5 import QtCore from PyQt5.QtCore import QDate, Qt from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QDateTimeEdit class MyWidget(QWidget): def __init__(self): super(MyWidget, self).__init__() # 日歷 self.calendar = QCalendarWidget(self) self.calendar.setMinimumDate(QDate(1980, 1, 1)) self.calendar.setMaximumDate(QDate(3000, 1, 1)) self.calendar.setGridVisible(True) self.calendar.setFirstDayOfWeek(Qt.Monday) self.calendar.move(10, 10) self.calendar.clicked[QtCore.QDate].connect(self.showData) # dateTimeEdit self.dte = QDateTimeEdit(self) self.dte.setMaximumDate(QDate.currentDate().addDays(365)) self.dte.setMinimumDate(QDate.currentDate().addDays(-365)) self.dte.setDisplayFormat('yyyy-MM-dd HH:mm:ss') self.dte.move(10, 250) self.dte.dateChanged.connect(self.onDateChange) self.dte.timeChanged.connect(self.onTimeChange) self.dte.dateTimeChanged.connect(self.onDateTimeChange) def showData(self, date): print(date.toString("yyyy-MM-dd dddd")) def onDateChange(self, data): print("onDateChange: ") print(data) def onTimeChange(self, time): print("onTimeChange: ") print(time) def onDateTimeChange(self, dateTime): print("onDateTimeChange: ") print(dateTime) if __name__ == '__main__': app = QApplication(sys.argv) w = MyWidget() w.resize(500, 300) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_())
setRange