常用方法:
count()
:返回下拉选项集合中的数目
currentText()
:返回选中选项的文本
itemText(i)
:获取索引为 i 的 item 的选项文本
currentIndex()
:返回选中项的索引
setItemText(int index,text)
:改变序列号为 index 的文本
信号:
Activated
:当用户选中一个下拉选项时发射该信号
currentIndexChanged
:当下拉选项的索引发生改变时发射该信号
highlighted
:当选中一个已经选中的下拉选项时,发射该信号
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class ComboxDemo(QWidget):
def __init__(self,parent=None):
super(ComboxDemo, self).__init__(parent)
#设置标题
self.setWindowTitle('ComBox例子')
#设置初始界面大小
self.resize(300,90)
#垂直布局
layout=QVBoxLayout()
#创建标签,默认空白
self.btn1=QLabel('')
#实例化QComBox对象
self.cb=QComboBox()
#单个添加条目
self.cb.addItem('C')
self.cb.addItem('C++')
self.cb.addItem('Python')
#多个添加条目
self.cb.addItems(['Java','C#','PHP'])
#当下拉索引发生改变时发射信号触发绑定的事件
self.cb.currentIndexChanged.connect(self.selectionchange)
#控件添加到布局中,设置布局
layout.addWidget(self.cb)
layout.addWidget(self.btn1)
self.setLayout(layout)
def selectionchange(self,i):
#标签用来显示选中的文本
#currentText():返回选中选项的文本
self.btn1.setText(self.cb.currentText())
print('Items in the list are:')
#输出选项集合中每个选项的索引与对应的内容
#count():返回选项集合中的数目
for count in range(self.cb.count()):
print('Item'+str(count)+'='+self.cb.itemText(count))
print('current index',i,'selection changed',self.cb.currentText())
if __name__ == '__main__':
app=QApplication(sys.argv)
comboxDemo=ComboxDemo()
comboxDemo.show()
sys.exit(app.exec_())
常用方法:
currentFont(): 获得当前所选择的字体;
fontFilters(): 获得当前的字体过滤器。
信号:
currentIndexChanged(QString text) :当前索引发生了改变,会发射该信号
currentFontChanged(QFont font) :选中字体时会发射该信号
详细介绍可参考博客”实战PyQt5: 030-字体选择控件QFontComboBox“
常用方法:
setText() : 设置文本框内容
Text() : 返回文本框内容
clear() : 清除多行文本框的内容。
信号:
selectionChanged : 只要选择改变了,这个信号就会被发射
textChanged : 当修改文本内容时,这个信号会被发射
editingFinished : 当编辑文本结束时,这个信号会被发射
详细介绍可参考博客“PyQt5- QLineEdit控件使用”
常用方法:
toPlainText() : 返回多行文本框的文本内容。
toHtml() : 返回多行文本框的HTML文档内容(HTML文档是描述网页的)
append() : 追加字符串
clear() : 清除多行文本框的内容。
常用方法:
toPlainText() :获取文本内容
insertPlainText(): 插入普通文本
appendPlainText(): 添加普通文本
appendHtml(): 添加HTML文本内容
isReadOnly(): 是否是只读模式
信号:
textChanged: 文本内容发生改变时触发;
selectionChanged:选中内容发生改变时触发;
cursorPositionChanged: 光标位置发生改变触发;
copyAvailable:复制可用时触发
redoAvailable: 重做可用触发
undoAvailable: 撤销可用触发
具体的调用示例可参考博客“纯文本编辑控件QPlainTextEdit”
value() :返回计数器的当前值
信号:
editingFinish :当编辑框按下回车后触发
valueChanged :发生改变时,发射该信号
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class spindemo(QWidget):
def __init__(self,parent=None):
super(spindemo, self).__init__(parent)
#设置标题与初始大小
self.setWindowTitle('练习 :SpinBox')
self.resize(300,100)
#垂直布局
layout=QVBoxLayout()
#创建按钮并设置居中
self.l1=QLabel('current value')
self.l1.setAlignment(Qt.AlignCenter)
layout.addWidget(self.l1)
#创建计数器,并添加控件,数值改变时发射信号触发绑定事件
self.sp=QSpinBox()
layout.addWidget(self.sp)
self.sp.valueChanged.connect(self.Valuechange)
self.setLayout(layout)
def Valuechange(self):
#显示当前计数器地数值
self.l1.setText('current value:'+str(self.sp.value()))
if __name__ == '__main__':
app=QApplication(sys.argv)
ex=spindemo()
ex.show()
sys.exit(app.exec_())
详细介绍可参考博客“【PyQt5】SpinBox和DoubleSpinBox”
允许用户编辑时间、日期的控件
QDateEdit用来编辑控件的日期,年月日
QTimeEdit用来编辑控件的时间,时分秒
如果要同时操作日期时间,请使用QDateTimeEdit
常用方法:
time() :返回编辑的时间
date() :返回编辑的日期
信号:
dateChanged:当日期改变时发射此信号
dateTImeChanged:当日期时间改变时发射此信号
timeChanged:当时间发生改变时发射此信号
import sys
from PyQt5.QtCore import QDate,QDateTime,QTime
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class DateTimeEditDemo(QWidget):
def __init__(self):
super(DateTimeEditDemo, self).__init__()
self.initUI()
def initUI(self):
#设置标题与初始大小
self.setWindowTitle('练习 :QDateTimeEdit')
self.resize(300,90)
#垂直布局
layout=QVBoxLayout()
#创建日期时间空间,并把当前日期时间赋值,。并修改显示格式
self.dateEdit=QDateTimeEdit(QDateTime.currentDateTime(),self)
self.dateEdit.setDisplayFormat('yyyy-MM-dd HH:mm:ss')
#设置日期最大值与最小值,在当前日期的基础上,后一年与前一年
#设置日期时间为今天
self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365))
self.dateEdit.setMaximumDate(QDate.currentDate().addDays(365))
#设置日历控件允许弹出
#注意:用来弹出日历的类只有QDateTimeEdit和QDateEdit,
#而QTimeEdit类虽然在语法上可以设置弹出日历,但是不起作用
self.dateEdit.setCalendarPopup(True)
#当日期改变时触发槽函数
self.dateEdit.dateChanged.connect(self.onDateChanged)
#当日期时间改变时触发槽函数
self.dateEdit.dateTimeChanged.connect(self.onDateTimeChanged)
#当时间改变时触发槽函数
self.dateEdit.timeChanged.connect(self.onTimeChanged)
#创建按钮并绑定一个自定义槽函数
self.btn=QPushButton('获得日期和时间')
self.btn.clicked.connect(self.onButtonClick)
#布局控件的加载与设置
layout.addWidget(self.dateEdit)
layout.addWidget(self.btn)
self.setLayout(layout)
#日期发生改变时执行
def onDateChanged(self,date):
#输出改变的日期
print(date)
#无论是日期还是时间改变都执行
def onDateTimeChanged(self,dateTime):
#输出改变的日期时间
print(dateTime)
#时间发生改变执行
def onTimeChanged(self,time):
#输出改变的时间
print(time)
def onButtonClick(self):
dateTime=self.dateEdit.dateTime()
#最大日期
maxDate=self.dateEdit.maximumDate()
#最大日期时间
maxDateTime=self.dateEdit.maximumDateTime()
#最大时间
maxTime=self.dateEdit.maximumTime()
#最小日期
minDate = self.dateEdit.minimumDate()
#最小日期时间
minDateTime=self.dateEdit.minimumDateTime()
#最小时间
minTime=self.dateEdit.minimumTime()
print('\n选择时间日期')
print('日期时间=%s' %str(dateTime))
print('最大日期=%s'%str(maxDate))
print('最大日期时间=%s'%str(maxDateTime))
print('最大时间=%s'%str(maxTime))
print('最小日期=%s'%str(minDate))
print('最小日期时间=%s'%str(minDateTime))
print('最小时间=%s'%str(minTime))
if __name__ == '__main__':
app=QApplication(sys.argv)
demo=DateTimeEditDemo()
demo.show()
sys.exit(app.exec_())
常用方法:
notchesVisile(): 刻度可见返回True,不可见返回False
wrapping(): 指针可回绕则返回True, 否则返回False
notchTarget(): 返回刻度间的目标宽度
notchSize(): 当前刻度尺寸
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import (QApplication, QWidget, QDial,
QLabel, QHBoxLayout)
class DemoDial(QWidget):
def __init__(self, parent=None):
super(DemoDial, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('练习 :QDial')
# 设置窗口大小
self.resize(400, 300)
self.initUi()
def initUi(self):
self.dial = QDial(self)
self.dial.setRange(0, 100)
self.dial.setNotchesVisible(True)
self.dial.valueChanged.connect(self.onDialValueChanged)
self.labValue = QLabel('0', self)
self.labValue.setFont(QFont('Arial Black', 24))
hLayout = QHBoxLayout(self)
hLayout.addWidget(self.dial)
hLayout.addWidget(self.labValue)
self.setLayout(hLayout)
def onDialValueChanged(self):
self.labValue.setText(str(self.dial.value()))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoDial()
window.show()
sys.exit(app.exec())
允许用户沿水平或者垂直方向在某一范围内滚动条,QScrollbar常用于空间位置的变化,比如,一幅大的图像。
常用方法:
value(): 获得滚动条的值
信号:
valueChanged: 当滑块的值发生改变时发射此信号,最常用的!!
sliderPressed: 当用户按下滑块时发射此信号
sliderMoved: 当用户拖动滑块时发射此信号
sliderReleased: 当用户释放滑块时发射此信号
允许用户沿水平或者垂直方向在某一范围内移动滑块,并将滑块所在的位置转换为一个合法范围内的整数值,QSlider用于控制时间变化,比如播放器。
常用方法:
value(): 获得滑动条的值
信号:
valueChanged: 当滑块的值发生改变时发射此信号,最常用的!!
sliderPressed: 当用户按下滑块时发射此信号
sliderMoved: 当用户拖动滑块时发射此信号
sliderReleased: 当用户释放滑块时发射此信号
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QLabel, QVBoxLayout, QFormLayout
class DemoSlider(QWidget):
def __init__(self, parent=None):
super(DemoSlider, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('练习 : QSlider')
# 设置窗口大小
self.resize(400, 240)
# 主布局为垂直布局
vLayer = QVBoxLayout(self)
# R,G,B颜色条
self.frm_r = QWidget(self)
self.frm_r.setMinimumHeight(32)
self.frm_r.setAutoFillBackground(True)
self.frm_g = QWidget(self)
self.frm_g.setMinimumHeight(32)
self.frm_g.setAutoFillBackground(True)
self.frm_b = QWidget(self)
self.frm_b.setMinimumHeight(32)
self.frm_b.setAutoFillBackground(True)
# form 布局
fLayout = QFormLayout(self)
fLayout.setHorizontalSpacing(20)
fLayout.addRow(QLabel('Red', self), self.frm_r)
fLayout.addRow(QLabel('Green', self), self.frm_g)
fLayout.addRow(QLabel('Blue', self), self.frm_b)
slider = QSlider(Qt.Horizontal, self)
slider.setRange(0, 255)
slider.setSingleStep(1)
slider.setValue(128)
slider.valueChanged.connect(self.sliderValueChanged)
vLayer.addLayout(fLayout)
vLayer.addSpacing(40)
vLayer.addWidget(slider)
vLayer.addStretch()
self.setLayout(vLayer)
# 设置初值
self.sliderValueChanged(128)
def sliderValueChanged(self, new_value):
pal = QPalette()
pal.setColor(QPalette.Background, QColor(new_value, 0, 0))
self.frm_r.setPalette(pal)
pal.setColor(QPalette.Background, QColor(0, new_value, 0))
self.frm_g.setPalette(pal)
pal.setColor(QPalette.Background, QColor(0, 0, new_value))
self.frm_b.setPalette(pal)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoSlider()
window.show()
sys.exit(app.exec())
常用方法:
setKeySequence(): 设置快捷键序列
keySequence(): 获得快捷键序列
clear(): 清除快捷键序列
常用信号:
keySequenceChanged: 快捷键序列发生改变,发射信号,并传入快捷键序列
editingFinished: 快捷键编辑结束后发射该信号
具体示例可参考博客“实战PyQt5: 029-快捷键编辑控件QKeySequenceEdit”
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。