Python 第三方包之 Pyqt5

1. 分类

  • QWidget
  • QMainWindow
  • QDialog

2. 组件

1. QLabel 文本块

2. QLineEdit 单行文本输入框

3. QTextEdit 文本编辑框

  • setText()用来设置文本
  • toPlainText()用来获取文本
  • textChanged文本发生改变的时候,会发出信号,之后可利用connect(<func>)调用槽函数
  • toPlainText()获取文本

4. QTextBrowser 文本浏览框

  • 会执行html代码
  • setText()用来设置文本
  • toPlainText()用来获取文本

5. QPushButton 一般按钮

1. 事件

  • clicked:点击
  • pressed:点击左键触发
  • released:释放左键触发
  • toggled:按钮标记状态发生变化的信号
1
2
3
self.my_button.clicked.connect(self.print_hello)
self.my_button.pressed.connect(self.press_me)
self.my_button.released.connect(self.release_me)

2. 状态

  • setCheckable(True):设置可标记
  • isChecked():返回值判断按钮是否为标记状态,True为标记
  • setIcon(QIcon('button.png')):设置图标

6. QToolButton 工具操作相关的按钮

  • 通常和QToolBar搭配使用
  • 设置文本需要通过setText()方法

7. QRadioButton 单选按钮

  • setChecked(True)设为选中状态

8. QCheckBox 复选框

  • 复选框一共有三种状态:全选中、半选中和无选中,存在于父选项和子选项间子选项
  • setCheckState():参数可以是选中状态Qt.Checked,无选中状态Qt.Unchecked和半选中状态Qt.PartiallyChecked
  • stateChanged信号会在复选框状态发生改变的时候发出,之后可利用connect(lambda:<func>)调用槽函数
  • checkState()方法可以获取当前复选框的状态,返回值为int类型,0为无选中状态,1为半选中状态,2位选中状态

3. 布局

1. 分类

  • QVBoxLayout垂直布局
  • QHBoxLayout水平布局
  • QFormLayout表单布局
  • QGridLayout网格布局

2. 注意

  1. addWidget()方法用来添加控件,addLayout()方法用来添加布局
  2. 前三种添加控件语法:addWidget(widget)
  3. 网格布局语法添加控件语法:addWidget(widget, row, column, rowSpan, columnSpan)
  4. addStretch(1) 添加大小为1的占位符,可以通过两侧添加相同的占位符来居中控件
  5. setAlignment(Qt.AlignCenter) 可使用控件直接居中
  6. setWindowTitle方法可以设置窗口标题

4. 弹框 QMessageBox

1. 分类

  • information信息框
  • question问答框
  • warning警告框
  • critical错误框
  • about关于框

2. 语法

语法:QMessageBox.information(self, '弹框名', '内容', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)

可选的按钮:

  • QMessageBox.Ok
  • QMessageBox.Yes
  • QMessageBox.No
  • QMessageBox.Close
  • QMessageBox.Cancel
  • QMessage.Open
  • QMessage.Save

3. 注意

  1. 可以不指定按钮
  2. 获取弹框返回值可以做到信息框交互
1
2
3
4
5
6
7
8
choice = QMessageBox.information(self, '弹框名', '内容', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel) 

if choice == QMessageBox.Yes:
print("I am sure")
elif choice == QMessageBox.No:
print("I am not sure")
else:
print("Whatever")

5. 控件

1. 进度条 QSlider

1. 语法

QSlider(Qt.Horizontal, self)

  • Qt.Horizontal水平滑动条
  • Qt.Vertical垂直滑动条

2. 方法

  • setRange(0, 100)设置滑动条范围
  • setMinimum()设置滑动条最小值
  • setMaximum()设置滑动条最大值
  • valueChanged信号会在数值发生改变时发出,之后可利用connect(lambda:<func>)调用槽函数
  • value()获取当前滑动条数值

2. 仪表盘 QDial

1. 语法

QDial(self)

2. 方法

  • setFixedSize(100, 100)设置仪表盘大小,如果不设置该方法,在改变表盘数值时,表盘的大小会发生改变
  • setRange(0, 100)设置表盘数值范围
  • setMinimum()设置表盘最小值
  • setMaximum()设置表盘最大值
  • setNotchesVisible(True)可以显示刻度
  • valueChanged信号会在数值发生改变时发出,之后可利用connect(lambda:<func>)调用槽函数
  • value()获取当前表盘数值

3. 定时器 QTimer

1. 语法

QTimer(self)

2. 方法

  • timeout信号会在随计数器数值改变发出,之后可利用connect(<func>)调用槽函数
  • setSingleShot(True)只会在触发timeout信号后调用一次绑定的槽函数
  • start(100)开始定时器,每过100ms,定时器会触发timeout信号
  • stop()停止定时器
  • isActive()判断定时器是否处于激活状态

4. 进度条 QProgressBar

1. 语法

QProgressBar(self)默认是水平的

2. 方法

  • setOrientation(Qt.Horizontal)设置水平还是垂直
  • setRange(0, 100)设置进度条范围
  • setMinimum()设置进度条最小值
  • setMaximum()设置进度条最大值
  • setValue()设置进度条的值
  • progressbar.reset()进度条重置

5. 液晶数字显示屏 QLCDNumber

1. 语法

QLCDNumber(self)

2. 方法

  • setDigitCount(10)设置一共可以显示多少位数
  • setSegmentStyle(QLCDNumber.Outline)设置显示屏数字样式
    • QLCDNumber.Outline:内容浮现,颜色与显示屏背景颜色相同
    • QLCDNumber.Filled:内容浮现,颜色与窗口标题颜色相同
    • QLCDNumber.Flat:内容扁平化,颜色与窗口标题颜色相同
  • setSmallDecimalPoint(True)设置小数点的显示方式
    • True:小数点会在两个数字之间显示出来,不会单独占一个位置
    • False:默认
  • setMode(QLCDNumber.Hex)数字显示方式
    • QLCDNumber.Hex数字以十六进制方式显示
    • QLCDNumber.Dec数字以十进制方式显示
    • QLCDNumber.Oct数字以八进制方式显示
    • QLCDNumber.Bin数字以二进制方式显示
  • display(1234567890)用于显示数字

6. 不可编辑日历控件 QCalendarWidget

1. 语法

QCalendarWidget(self)

2. 方法

  • setDateRange(QDate(1949, 10, 1), QDate(6666, 6, 6))设置日历范围
  • setMaximumDate(QDate(1949, 10, 1))设置日历最大日期
  • setMinimumDate(QDate(6666, 6, 6))设置日历最小日期
  • self.calendar.setFirstDayOfWeek(Qt.Monday)设置一个星期的第一天,默认第一天为星期天
    • Qt.Monday
    • Qt.Tuesday
    • Qt.Wednesday
    • Qt.Thursday
    • Qt.Friday
    • Qt.Saturday
    • Qt.Sunday
  • setSelectedDate(QDate(2020, 11, 11))设置日历初始化时所显示的日期,默认是当天日期
  • setGridVisible(True)设置是否在日历上显示网格
    • True:显示网格
    • False:不显示网格
  • selectedDate()获取到当前所选日期,接着通过toString("yyyy.MM.dd")方法获取星期的缩写