六、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_())

运行结果如下

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

2、QMessageBox

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

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

    QMessageBox类中的常用方法如下:

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

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

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

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_())

运行效果如下:

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

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_())

运行结果:

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

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_())

运行结果:

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

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_())

运行结果:

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


相关文章:

  • 2022-01-21
  • 2021-12-01
  • 2022-12-23
  • 2021-11-02
  • 2022-12-23
  • 2021-11-21
  • 2021-07-24
  • 2022-02-19
猜你喜欢
  • 2021-04-05
  • 2022-12-23
  • 2021-04-08
  • 2021-12-17
  • 2022-12-23
  • 2021-06-16
  • 2022-12-23
相关资源
相似解决方案