04.PyQt5基本窗口控件part2------PyQt5编程开发

六、QComboBox(下拉列表框)

    QComboBox是一个集按钮和下拉选项于一体的控件,也被称为下拉列表框。QComboxBox类中的常用方法如下:

    addItem():添加一个下拉选项

    addItems():从列表中添加下拉选项

    Clear():删除下拉选项几何中的所有选项

    count():返回下拉选项几何中的数目

    currentText():返回选中选项的文本

    itemText(i):获取索引为i的item的选项文本

    currentIndex():返回选中项的索引

    setItemText(int index,text):改变序号为index项的文本

    QComboBox类中的常用信号:

    Activated:当用户选中一个下拉选项是发射该信号

    currentIndexChanged;当下拉选项的索引发生改变时发射该信号

    highlighted:当选中一个已经选中的下拉选项时,发射该信号

    完整演示代码:E:\testPyQt5\Chapter04\qt0411_QComboBox.py

七、QSpinBoX(计数器)

    QSpinBox是一个计数器控件,允许用户选择一个整数值,通过单击向上/向下按钮或按键盘上的上/下箭头来增加/减少当前显示的值,当然用户也可以输入值。

    在默认情况下,QSpinBox的取值范围为0~99,每次改变的步长值为1.

    QDoubleSpinBox和QSpinBox唯一的区别就是处理数据的类型不同,其他功能都基本相同。

    QSpinBox类中的常用方法如下:

    setMinimum():设置计数器的下界

    setMaximum():设置计数器的商界

    setRange():设置计数器的最大值、最小值和步长

    setValue():设置计数器的当前值

    Value():返回计数器的当前值

    singleStep():设置计数器的步长值

每次单击向上/向下按钮时,QSpinBox计数器都会发射valueChanged信号,可以从相应的槽函数中通过value()函数获得计数器的当前值。

完整演示代码:E:\testPyQt5\Chapter04\qt0412_QSpinBox.py

八、QSlider(滑动条)

    QSlider控件提供了一个垂直或水平的滑动条。

    QSlider类中的常用方法如下:

    setMinimum():设置滑动条控件的最小值

    setMaximum():设置滑动条控件的最大值

    setSingleStep():设置滑动条控件递增/递减的步长值

    setValue():设置滑动条控件的值

    value():获得滑动条控件的值

    setTickInterval():设置刻度间隔

    setTickPositon():设置刻度标记的位置,可以输入一个枚举值,这个枚举值指定刻度线相对于滑块和用户操作的位置。以下是可以输入的枚举值:

    QSlider.NoTicks,不绘制任何刻度线

    QSlider.TicksBothSlides,在滑块的两侧绘制刻度线

    QSlider.TicksAbove,在(水平)滑块上方绘制刻度线

    QSlider.TicksBelow,在(水平)滑块下方绘制刻度线

    QSlider.TicksLeft,在(垂直)滑块左侧绘制刻度线

    QSlider.TicksRight,在(垂直)滑块右侧绘制刻度线

    QSlider类中常用信号如下:

    valueChanged:当滑块的值发生改变时发射该信号,该信号时最常用的

    sliderPressed:当用户按下滑块时发射次信号

    sliderMoved:当用户拖动滑块时发射此信号

    sliderReleased:当用户释放滑块时发射此信号

举例:

# -*- coding: utf-8 -*-
  
 '''
  【简介】
  PyQt5中 QSlider 例子
 
 
 '''
  
 import sys
 from PyQt5.QtCore import *
 from PyQt5.QtGui import *
 from PyQt5.QtWidgets import *
  
 class SliderDemo(QWidget):
 def __init__(self, parent=None):
 super(SliderDemo, self).__init__(parent)
 self.setWindowTitle("QSlider 例子")
 self.resize(300, 100)
  
 layout = QVBoxLayout()
 self.l1 = QLabel("Hello PyQt5")
 self.l1.setAlignment(Qt.AlignCenter)
 layout.addWidget(self.l1)
 # 水平方向
 self.sl = QSlider(Qt.Horizontal)
 #设置最小值
 self.sl.setMinimum(10)
 #设置最大值
 self.sl.setMaximum(50)
 # 步长
 self.sl.setSingleStep( 3 )
 # 设置当前值
 self.sl.setValue(20)
 # 刻度位置,刻度在下方
 self.sl.setTickPosition(QSlider.TicksBelow)
 # 设置刻度间隔
 self.sl.setTickInterval(5)
 layout.addWidget(self.sl)
 # 连接信号槽
 self.sl.valueChanged.connect(self.valuechange)
 self.setLayout(layout)
  
 def valuechange(self):
 print('current slider value=%s' % self.sl.value() )
 size = self.sl.value()
 self.l1.setFont(QFont("Arial",size))
  
 if __name__ == '__main__':
 app = QApplication(sys.argv)
 demo = SliderDemo()
 demo.show()
 sys.exit(app.exec_())

九、对话框类控件

1、QDialog

    PyQt5中定义了一系列的标准对话框类,让使用者能够方便和快捷地通过各个类完成字号大小、字体颜色以及文件的选择等。QDialog类的子类主要有QMessageBox、QFileDialog、QFontDialog、QInputDialog等。QDialog类中的常用方法如下:

setWindowTitle():设置对话框标题

setWindowModality():设置窗口模态,取值如下:

                                        Qt.NonModal,非模态,可以和程序的其他窗口交互

                                        Qt.WindowModal,窗口模态,程序在未处理完当前对话框时,将阻止和对话框的父窗口进行交互

                                        Qt.ApplicationModal,应用程序模态,阻止和任何其他窗口进行交互

QDialog的使用例子:

# -*- coding: utf-8 -*-
  
 '''
  【简介】
  PyQt5中 QDialog 例子
 
 
 '''
  
 import sys
 from PyQt5.QtCore import *
 from PyQt5.QtGui import *
 from PyQt5.QtWidgets import *
  
 class DialogDemo( QMainWindow ):
  
 def __init__(self, parent=None):
 super(DialogDemo, self).__init__(parent)
 self.setWindowTitle("Dialog 例子")
 self.resize(350,300)
  
 self.btn = QPushButton( self)
 self.btn.setText("弹出对话框")
 self.btn.move(50,50)
 self.btn.clicked.connect(self.showdialog)
  
 def showdialog(self ):
 dialog = QDialog()
 btn = QPushButton("ok", dialog )
 btn.move(50,50)
 dialog.setWindowTitle("Dialog")
 dialog.setWindowModality(Qt.ApplicationModal)
 dialog.exec_()
  
 if __name__ == '__main__':
 app = QApplication(sys.argv)
 demo = DialogDemo()
 demo.show()
 sys.exit(app.exec_())

运行结果如下

2、QMessageBox

    ta是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈。每个标准按钮都有一个预定义的文本、角色和十六进制数。

    QMessageBox类提供了许多常用的弹出式对话框,如提示、警告、错误、询问、关于等对话框。这些不同类型的QMessageBox对话框只是显示时的图标不同,其他功能是一样的。

    QMessageBox类中的常用方法如下:

    



QMessageBox使用代码:

# -*- coding: utf-8 -*-
  
 '''
  【简介】
  PyQt5中 QMessage 例子
 
 
 '''
  
 import sys
 from PyQt5.QtCore import *
 from PyQt5.QtGui import *
 from PyQt5.QtWidgets import *
  
 class WinForm( QWidget):
 def __init__(self):
 super(WinForm,self).__init__()
 self.setWindowTitle("QMessageBox 例子")
 self.resize(300, 100)
 self.myButton = QPushButton(self)
 self.myButton.setText("点击弹出消息框")
 self.myButton.clicked.connect(self.msg)
  
 def msg(self):
 # 使用infomation信息框
 reply = QMessageBox.information(self, "标题", "对话框消息正文", QMessageBox.Yes | QMessageBox.No , QMessageBox.Yes )
 print( reply )
  
 if __name__ == '__main__':
 app= QApplication(sys.argv)
 demo = WinForm()
 demo.show()
 sys.exit(app.exec_())

运行效果如下:


3、QInputDialog

QInputDialog控件是一个标准对话框,由一个文本框和两个按钮(ok按钮和cancel按钮)组成。当用户单击ok按钮或按enter键后,在父窗口可以收集通过QInputDialog控件输入的信息。常用方法如下

    getInt():从控件中获得标准整数输入

    getDouble():从控件中获得标准浮点数输入

    getText():从控件中获得标准字符串输入

    getItem():从控件中获得列表里的选项输入

例子:

# -*- coding: utf-8 -*-
  
 '''
  【简介】
  PyQt5中 QInputDialog 例子
 
 
 '''
  
 import sys
 from PyQt5.QtCore import *
 from PyQt5.QtGui import *
 from PyQt5.QtWidgets import *
  
 class InputdialogDemo(QWidget):
 def __init__(self, parent=None):
 super(InputdialogDemo, 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 Dialog 例子")
  
 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 Dialog', '输入姓名:')
 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)
 demo = InputdialogDemo()
 demo.show()
 sys.exit(app.exec_())

运行结果:


4、QFontDialog

    它是一个常用的字体选择对话框,可以让用户选择所显示文本的字号大小、样式和格式。QFontDialog是QDialog标准对话框的一部分。使用QFontDialog类的静态方法getFont(),可以从字体选择对话框中选择文本的显示字号大小、样式和格式

    例:

# -*- coding: utf-8 -*-
  
 '''
  【简介】
  PyQt5中 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)
 demo = FontDialogDemo()
 demo.show()
 sys.exit(app.exec_())

运行结果:

    

5、QFileDialog

    它是用于打开和保存文件的标准对话框。QFileDialog类继承自QDialog类。它在打开文件时使用了文件过滤器,用于显示指定扩展名的文件。也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件。它的常用方法:

    getOpenFileName():返回用户所选择文件的名称,并打开该文件

    getSaveFileName():使用用户选择的文件名并保存文件

    setFileMode():可以选择的文件类型,枚举常量是  QFileDialog.AnyFile,任何文件       QFileDialog.ExistingFile,已存在的文件      QFleDialog.Directory ,文件目录         QFileDialog.ExistingFiles,已经存在的多个文件

    setFilter():设置过滤器,只显示过滤器允许的文件类型

例子:

# -*- coding: utf-8 -*-
  
 '''
  【简介】
  PyQt5中 QFileDialog 例子
 
 
 '''
  
 import sys
 from PyQt5.QtCore import *
 from PyQt5.QtGui import *
 from PyQt5.QtWidgets import *
  
 class filedialogdemo(QWidget):
 def __init__(self, parent=None):
 super(filedialogdemo, self).__init__(parent)
 layout = QVBoxLayout()
 self.btn = QPushButton("加载图片")
 self.btn.clicked.connect(self.getfile)
 layout.addWidget(self.btn)
 self.le = QLabel("")
 layout.addWidget(self.le)
 self.btn1 = QPushButton("加载文本文件")
 self.btn1.clicked.connect(self.getfiles)
 layout.addWidget(self.btn1)
 self.contents = QTextEdit()
 layout.addWidget(self.contents)
 self.setLayout(layout)
 self.setWindowTitle("File Dialog 例子")
  
 def getfile(self):
 fname, _ = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\',"Image files (*.jpg *.gif)")
 self.le.setPixmap(QPixmap(fname))
  
 def getfiles(self):
 dlg = QFileDialog()
 dlg.setFileMode(QFileDialog.AnyFile)
 dlg.setFilter( QDir.Files )
  
 if dlg.exec_():
 filenames= dlg.selectedFiles()
 f = open(filenames[0], 'r')
  
 with f:
 data = f.read()
 self.contents.setText(data)
  
 if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = filedialogdemo()
 ex.show()
 sys.exit(app.exec_())

运行结果:

    


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页