QComboBox(下拉列表框)
QComboBox是一个集按钮和下拉选项于一体的控件
方法 | 描述 |
addItem() | 添加一个下拉选项 |
addItems() | 从列表中添加下拉选项。 |
Clear() | 删除下拉选项集合中的所有选项 |
count() | 返回下拉选项集合中的数目。 |
currentText() | 返回选中选项的文本。 |
itemText(i) | 获取索引为I的item的选项文本。 |
currentIndex() | 返回选中项的索引。 |
setItemText(int index,text) | 改变序号为index项的文本。 |
信号 | 含义 |
Activated | 当用户选中一个下拉选项时 发射该信号。 |
currentIndexChanged | 当下拉选项的索引发生改变时发射该信号。 |
highlighted | 当选中一个已经选中的下拉选项时,发射该信号。 |
addItem()添加单个选项,addItems()方法添加多个选项。
self.cb = QComboBox()
self.cb.addItem("c")
self.cb.addItem("C++")
self.cb.addItems(["java","C#","python"])
当下拉列表框中的选项发生改变时将发射currentIndexChanged信号,连接到自定义的槽函数selectionchange()
self.cb.currentIndexChanged.connect(self.selectionchange)
当选中下拉列表框中的一个选项时,将给选项的文本设置为标签的文本,并调整标签的大小。
def selectionchange(self,i):
self.lb1.setText(self.cb.currentText())
QSpinBox(计数器)
QSpinBox 是一个计数控件,允许用户选择一个整数值,通过单击向上/向下按钮或者按键盘上的上/下箭头来增加/减少当前显示的值。用户也可以输入值。在默认情况下,QSpinBox的取值的范围是0-99,每次改变的步长值为1。
方法 | 描述 |
setMinimun() | 设置计数器的下界 |
setMaximun() | 设置计数器的上界 |
setRange() | 设置计数器的最大值、最小值和步长值 |
setValue() | 设置计数器的当前值。 |
value() | 返回计数器的当前值。 |
singleStep() | 设置计数器的步长值。 |
每次单击向上/向下按钮时,QSpinBox 计数器都会发射valueChanged信号,可以从相应的槽函数中通过value()函数获得计数器的当前值
例子
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class spindemo(QWidget):
def __init__(self, parent=None):
super(spindemo, self).__init__(parent)
self.setWindowTitle("SpinBox例子")
self.resize(300, 250)
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)
win = spindemo()
win.show()
sys.exit(app.exec_())
QSlider(滑动条)
QSlider控件提供了一个垂直或水平的滑动条,滑动条是一个用于控制有界值得典型控件,他允许用户沿水平或垂直方向在某一范围内移动滑块,并将滑块所在的位置转换成一个合法范围内的整数值,有时候这种方式比输入数字或者使用SpinBox(计数器)更加自然。在槽函数中对滑块所在位置的处理相当于从整数之间的最小值和最大值进行取值。
一个滑块条控件可以以水平或垂直的方式显示,在构造函数进行设置。
self.sp = QSlider(Qt.Horizontal) #水平方向。
self.sp = QSlider(Qt.Vertical) #垂直方向。
方法 | 描述 |
setMinimum() | 设置滑动条控件的最小值。 |
setMaximum() | 设置滑动条控件的最大值。 |
setSingleStep() | 设置滑动条控件递增/递减的步长值。 |
setValue() | 设置滑动条控件的值。 |
value() | 获得滑动条控件的值。 |
setTickInterval() | 设置刻度间隔。 |
setTickPosition() | 设置刻度标记的位置,可以输入一个枚举值,这个枚举值指定刻度相对于滑块和用户操作的位置,以下是可以输入的枚举值: QSlider.NoTicks, 不绘制任何刻度线。 QSlider.TicksBoshSides, 滑块的两侧绘制刻度线。 QSlider.TicksAbove, 在(水平)滑块上方绘制刻度线。 QSlider.TicksBelow, 在(水平)滑块下方绘制刻度线。 QSlider.TicksLeft, 在(垂直)滑块左侧绘制刻度线。 QSlider.TicksRignt, 在(垂直)滑块右侧绘制刻度线。 |
信号 | 描述 |
valueChanged | 当滑块的值发生改变时发射这个信号,此信号最常用。 |
sliderPressed | 当用户按下滑块时发射此信号。 |
sliderMoved | 当用户拖动滑块时发射此信号。 |
sliderReleased | 当用户释放滑块时发射此信号。 |
self.s1 = QSlider(Qt.Horizontal) #水平方向。
self.s1.setMinimum(10) #设置最小值。
self.s1.setMaximum(50) #设置最大值。
self.s1.setSingleStep(3) #步长。
self.s1.setValue(20) # 设置当前值。
self.s1.setTickPosition(QSlider.TicksBelow) #刻度位置,刻度在下方。
self.s1.setTickInterval(5) #设置刻度间隔。
对话框类控件
QDialog
为了更好地人机交互,比如widown 及 Linux 等系统均会提供一系列的标准对话框来完成特定场景下的功能,如选择字号大小,字体颜色等。
方法 | 描述 |
setWindowTitle() | 设置对话标题 |
setWindowModality() | 设置窗口模态。取值如下: Qt.NonModal,非模态,可以和程序的其他窗口交互 Qt.WindowModal, 窗口模态,程序在为处理完当前对话框时,将阻止和对话框的父窗口进行交互。 Qt.ApplicationModal,应用程序模态,阻止和任何其他窗口进行交互。 |
QMessageBox
QMessageBox 是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮时对消息进行反馈。每个标准按钮都有一个预定义的文本、角色和十六进制数。
QMessageBox 类提供了许多常用的弹出式对话框,如提示,警告,错误,询问,关于等对话框。这些不同类型的QMessageBox对话框只是显示时的图标不同,其他功能都一样。
方法 | 类型 |
information(QWidget parent, title text, buttons, defaultButton) | 弹出消息对话框,各参数解释如下: parent, 指定的父窗口控件。 title, 对话框标题。 text, 对话框文本。 buttons:多个标准按钮,默认为ok按钮。 defaultButton: 默认选中的标准按钮,默认第一个标准按钮。 |
question(QWidget parent,title,text,buttons,defaultButton) | 弹出问答对话框(各参数解释同上) |
warning(QWidget parent, title, text, buttons, defaultButton) | 弹出警告对话框(各参数解释如上) |
ctitical(QWidget parent,title,text,buttons,defaultButton) | 弹出严重错误对话框(各参数解释同上) |
about(QWidget parent ,title text) | 弹出关于对话框(各参数解释同上) |
setTitle() | 设置标题 |
setText() | 设置消息正文 |
setIcon() | 设置弹出对话框的图片 |
类型 | 描述 |
QMessage.Ok | 同意操作 |
QMessage.Cancel | 取消操作 |
QMessage.Yes | 同意操作 |
QMessage.No | 取消操作 |
QMessage.Abort | 终止操作 |
QMessage.Retry | 重试操作 |
QMessage.Ignore | 忽略操作 |
五种常用的消息对话框
对话框类型
显示效果
消息对话框,用来告诉用户关于提示消息
QMessageBox.information(self,"标题","消息对话框正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
提问对话框,用来告诉用户关于提问的消息:
QMessageBox.question(self, "标题", "提问框消息正文" , QMessageBox.Yes|QMessageBox.No ,QMessageBox.Yes)
警告对话框,用来告诉用户关于不寻常的错误消息:
QMessageBox.warning(self, "标题", "警告框消息正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
严重错误对话框,用来告诉用户关于严重的错误消息:
QMessageBox.critical(self, "标题", "严重错误对话框消息正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
关于对话框
QMessageBox.about(self,"标题", "关于对话框")
上面的效果图的代码例子如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super(MyWindow, self).__init__()
self.setWindowTitle("QMeddageBox例子")
self.resize(300, 100)
self.myButton = QPushButton(self)
self.myButton.setText("点击弹出消息框")
self.myButton.clicked.connect(self.msg)
def msg(self):
#rely = QMessageBox.information(self,"标题","消息对话框正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
#rely = QMessageBox.question(self, "标题", "提问框消息正文" , QMessageBox.Yes|QMessageBox.No ,QMessageBox.Yes)
#rely = QMessageBox.warning(self, "标题", "警告框消息正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
#rely = QMessageBox.critical(self, "标题", "严重错误对话框消息正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
rely = QMessageBox.about(self,"标题", "关于对话框")
print(rely)
if __name__=="__main__":
app=QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
QInputDialog
QInputDialog 控件是一个标准对话框,有一个文本框和两个按钮(OK按钮和Cancel按钮)组成。 当用户单击OK按钮或按Enter键后,父窗口可以手机通过QInputDialog控件输入信息。QInputDialog控件是QDialog标准对话框的一部分。
在QInputDialog控件中可以输入数字、字符串或列表中的选项。标签用于提示必要的信息。
方法 | 描述 |
getInt() | 从控件中获得标准整数输入 |
getDouble() | 从控件中获得标准浮点数输入 |
getText() | 从控件中获得标准字符串输入 |
getItem() | 从控件中获得列表里的选项输入 |
QInputDialog的使用
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class InputdialogDome(QWidget):
def __init__(self, parent=None):
super(InputdialogDome, self).__init__(parent)
layout = QFormLayout()
self.btn1 = QPushButton("获得列表里的选项")
self.btn1.clicked.connect(self.getItem)
self.le1 = QLineEdit()
layout.addRow(self.btn1, self.le1)
self.btn2 = QPushButton("获得字符串")
self.btn2.clicked.connect(self.getIext)
self.le2 = QLineEdit()
layout.addRow(self.btn2, self.le2)
self.btn3 = QPushButton("获得整数")
self.btn3.clicked.connect(self.getInt)
self.le3 = QLineEdit()
layout.addRow(self.btn3, self.le3)
self.setLayout(layout)
self.setWindowTitle("Input Dialon例子")
def getItem(self):
items = ("C", "C++", "Java", "Python")
item, ok = QInputDialog.getItem(self,"select input dialog", "语言列表", items, 0, False)
if ok and item:
self.le1.setText(item)
def getIext(self):
text, ok = QInputDialog.getText(self, "Text Input Dialon", "输入姓名:")
if ok:
self.le2.setText(str(text))
def getInt(self):
num, ok=QInputDialog.getInt(self, "integer input dualog", "输入数字")
if ok:
self.le3.setText(str(num))
if __name__=="__main__":
app=QApplication(sys.argv)
win = InputdialogDome()
win.show()
sys.exit(app.exec_())
运行代码的效果如下图:
QFontDialog
QFontDialog控件可以让用户选择所显示的一个文本的字号大小、样式和格式。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class FontDialogDemo(QWidget):
def __init__(self, parent=None):
super(FontDialogDemo, self).__init__(parent)
layout = QVBoxLayout()
self.fontButton = QPushButton("choose font")
self.fontButton.clicked.connect(self.getFont)
layout.addWidget(self.fontButton)
self.fontLineEdit = QLabel("Hello,测试字体例子")
layout.addWidget(self.fontLineEdit)
self.setLayout(layout)
self.setWindowTitle("Font Dialog 例子")
def getFont(self):
font, ok = QFontDialog.getFont()
if ok:
self.fontLineEdit.setFont(font)
if __name__=="__main__":
app=QApplication(sys.argv)
win = FontDialogDemo()
win.show()
sys.exit(app.exec_())
QFileDialog
QFileDialog 是用于打开和保存文件的标准对话框。
方法 | 描述 |
getOpenFileName() | 返回用户所选择文件的名称,并打开该文件 |
getSaveFileName() | 使用用户选择的文件名并保存文件 |
setFileMode() | 可以选择的文件类型,枚举常量是: QFileDialog.AnyFile, 任何文件 QFileDialog.ExistingFile,已存在的文件。 QFileDialog.Directory , 文件目录。 QFileDialog.ExistingFiles , 已经存在的多个文件。 |
setFilter() | 设置过滤器,只显示过滤器允许的文件类型。 |
声明
上面这些代码都是我在参照课本学习时敲的,都是来自王硕、孙洋洋著的《PyQt5快速开发与实战》,写下这些笔记是增加我的印象,同时也是供我参照。如有侵权,联系删除。