zoukankan      html  css  js  c++  java
  • PyQt5基础控件

    QLabel标签

    功能:在界面上显示文字、图片、链接等

    接口:

    方法 描述
    setText() 设置显示的内容
    setAlignment() 设置文字对齐方式
    setToolTip() 设置提示信息
    setPixmap() 设置显示内容为图片
    setOpenExternalLinks() 允许访问链接,打开浏览器,默认非使能

    信号:

    信号 描述
    linkActivated 点击标签中的超链接,且setOpenExternalLinks为true时触发
    linkHovered 当鼠标滑过标签中的超链接时触发

    QLineEdit

    功能:单行文本输入框

    接口:

    方法 描述
    setAlignment() 设置内容对齐方式
    clear() 清空
    setPlaceholderText() 显示默认内容
    setMaxLength() 设置运行输入的最大长度
    setReadOnly() 设置内容只读
    setText() 设置文本框内容
    Text() 返回文本框内容
    selectAll() 全选
    setFocus() 获取焦点
    setEchoMode()

    设置显示的内容格式:

    QLineEdit.Normal:正常显示所有字符,默认选项

    QLineEdit.NoEcho:不显示任何字符

    QLineEdit.Password:显示与平台相关的掩码字符,不显示实际输入内容

    QLineEdit.PasswordEchoOnEdit:在编辑时显示字符

    setInputMask() 设置掩码
    setValidator()

    设置允许输入的内容:

    QIntValidator:限制输入整型

    QDoubleValidator:限制输入浮点数

    QRegexpValidator:限制输入符合正则表达式

    信号:

    信号 描述
    selectionChanged 选中的内容改变时触发
    textChanged 修改文本内容时触发
    editingFinished 文本编辑结束时触发

    QTextEdit

    功能:显示多行文本、html文档

    接口:

    方法 描述
    setPlainText() 设置多行文本框内容
    toPlainText() 返回多行文本框内容
    setHtml() 设置内容为html文档
    toHtml() 返回多行文本框内容
    clear() 清空

    信号:与单行文本框类似

    QAbstractButton

    功能:按钮的公共基础类,不能直接实例化,主要提供按钮的通用功能

    状态:按钮具有几种状态,可以相互切换

    状态 含义
    isDown() 按钮是否被按下
    isChecked() 按钮是否被标记
    isEnable() 按钮是否可以被用户点击
    isCheckAble() 按钮是否可被标记
    setAutoRepeat() 按钮在用户长按时,是否可以自动重复执行

     信号:

    信号 描述
    Pressed 按钮被按下时触发
    Released 按钮被弹起时触发
    Clicked 按钮被按下且弹起时触发
    Toggled 按钮标记状态改变时触发

    QPushButton

    功能:单击按钮

    接口:

    方法 描述
    setCheckable() 设置按钮是否被选中。true或false。
    toggle() 在按钮状态之间切换
    setIcon() 设置按钮图标
    setEnable() 设置按钮是否可用。true或false。
    isChecked() 返回按钮的选中状态
    setText() 设置按钮显示文本
    text() 获取显示文本

    QRadioButton

    功能:单选按钮,提供多选一的功能

    说明:继承之同一个父类的单选按钮,默认多个单选按钮属于同一组;如果要实现多组,需要使用QGroupBox或QButtonGroup

    接口:

    方法 描述
    setCheckAble() 设置按钮是否被选中
    isChecked() 返回按钮的状态
    setText() 设置显示文本
    text() 返回显示文本

    QCheckBox

    功能:复选框,提供多选多的功能

    接口:

    方法 描述
    setChecked 设置复选框状态
    setText 设置显示文本
    text 返回显示文本
    isChecked 检查复选框是否被选中

    QComboBox

    功能:下拉框

    接口:

    方法 描述
    addItem() 添加一个下拉选项
    addItems() 从列表中添加下拉选项
    clear() 清空
    count() 返回下拉选项的数目
    currentText() 返回选中选项的文本
    itemText(i) 获取索引为i的选项文本
    currentIndex() 返回选中的索引
    setItemText(index, text) 设置索引i的内容为text

    QSpinBox/QDoubleSpinBox

    功能:计数器,允许用户选中一个值(整型或浮点型)

    接口:

    方法 描述
    setMinimum() 设置计数器的最小值
    setMaximum() 设置计数器的最大值
    setRange() 设置计数器的最大值、最小值以及步长
    setValue() 设置计数器的当前值
    Value() 获取计数器的当前值
    setSingleStep() 设置计数器步长

    信号:

    信号 描述
    valueChanged 计数器值改变时触发

    QProgressBar

    功能:进度条

    接口:

    方法 描述
    setRange() 设置范围
    setMinimum() 设置下限
    setMaximum() 设置上限
    setValue() 设置进度条的值
    reset() 进度条复位

    QSlider

    功能:滑动条,通过滑动的方式选择值,比计数器更加方便自然

    接口:

    方法 描述
     setMinimum()  设置滑动条最小值
     setMaximum() 设置滑动条最大值 
     singleStep() 设置步长 
     setValue() 设置滑动条当前值 
    Value() 获取当前值
    setTickInterval() 设置刻度间隔
    setTickPosition()

    设置刻度的样式

    QSlider.NoTicks:不绘制刻度

    QSlider.TicksBothSides:在滑块的两侧绘制刻度

    QSlider.TicksAbove:在滑块上方绘制刻度线

    QSlider.TicksBelow:在滑块下方绘制刻度线

    QSlider.TicksLeft:在滑块左侧绘制刻度线

    QSlider.TicksRight:在滑块右侧绘制刻度线

     信号:

    信号 描述
    valueChanged 当滑块的值发生变化时触发
    sliderPressed 当滑块被按下时触发
    sliderMoved 当滑块被拖动时触发
    sliderReleased 当滑块弹起时时触发

     QCalendar

    功能:日历控件

    接口:

    方法 描述
    setDateRange()  设置可供选择的日期范围
    setFirstDayofWeek() 设置星期的第一天,默认是星期天 
    setMinimumDate() 设置最大日期 
    setMaxmumDate() 设置最小日期 
    setSelectDate() 设置一个QData对象,作为当前日期空间所选定的日期 
    maximumDate() 获取最大日期 
    minimumDate() 获取最小日期
    selectedData() 获取当前选定的日期
    setGridvisible() 设置容器空间是否显示网格

     信号:

    信号 描述
    clicked(QtCore.QDate) 选定一个日期时触发

    QDateTimeEdit

    功能:允许用户编辑日期时间的控件,可以使用键盘和上下箭头来增加和减少日期的时间值

    接口:

    方法 描述
    setDisplayFormat()

    设置日期时间格式:

    yyyy:年

    MM:月

    dd:日

    HH:小时

    mm:分钟

    ss:秒

    setMinimumDate() 设置最小日期
    setMaxmumDate() 设置最大日期
    time() 返回编辑的时间
    date() 返回编辑的日期

    信号:

    信号 描述
    dateChanged 日期改变时触发
    dateTimeChanged 日期或时间改变时都会触发(优先)
    timeChanged 时间改变时触发

    例子

     1.将QLineEdit输入的内容显示到QLabel上

    import sys
    
    from PyQt5.QtCore import Qt
    from PyQt5.QtGui import QPalette
    from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit
    
    class MyWidget(QWidget):
        def __init__(self):
            super(MyWidget, self).__init__()
            # 初始化label
            self.label = QLabel(self)
            self.label.resize(100, 20)
            self.label.move(10, 10)
            self.label.setAutoFillBackground(True)
            self.palette = QPalette()
            self.palette.setColor(QPalette.Window, Qt.green)
            self.label.setPalette(self.palette)
            # 初始化lineEdit
            self.lineEdit = QLineEdit(self)
            self.lineEdit.setPlaceholderText('please enter')
            self.lineEdit.resize(100, 20)
            self.lineEdit.move(10, 40)
            # 绑定textChanged到方法
            self.lineEdit.textChanged.connect(self.syncToLabel)
    
        # 将lineEdit输入的内容显示到标签上
        def syncToLabel(self, msg):
            self.label.setText(msg)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        w = MyWidget()
        w.resize(500, 300)
        w.move(300, 300)
        w.setWindowTitle('Simple')
        w.show()
        sys.exit(app.exec_())

    2.多种按钮

    import sys
    
    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCheckBox, QRadioButton, QGroupBox, QVBoxLayout, 
        QHBoxLayout
    
    
    class MyWidget(QWidget):
        def __init__(self):
            super(MyWidget, self).__init__()
            # button
            self.button = QPushButton(self)
            self.button.move(10, 10)
            self.button.setText('按钮')
            self.button.clicked.connect(self.onButtonClicked)
    
            # radio
            self.radio1 = QRadioButton("Radio button 1")
            self.radio2 = QRadioButton("Radio button 2")
            self.radio3 = QRadioButton("Radio button 3")
    
            vbox = QVBoxLayout()
            vbox.addWidget(self.radio1)
            vbox.addWidget(self.radio2)
            vbox.addWidget(self.radio3)
            vbox.addStretch(1)
    
            radioGroup = QGroupBox(self)
            radioGroup.setLayout(vbox)
            radioGroup.move(10, 50)
    
            self.radio1.clicked.connect(self.onRadioClicked)
            self.radio2.clicked.connect(self.onRadioClicked)
            self.radio3.clicked.connect(self.onRadioClicked)
    
            # checkBox
            self.checkBox1 = QCheckBox("check box 1")
            self.checkBox2 = QCheckBox("check box 2")
            self.checkBox3 = QCheckBox("check box 3")
    
            hbox = QHBoxLayout()
            hbox.addWidget(self.checkBox1)
            hbox.addWidget(self.checkBox2)
            hbox.addWidget(self.checkBox3)
            hbox.addStretch(1)
    
            checkGroup = QGroupBox(self)
            checkGroup.setLayout(hbox)
            checkGroup.move(10, 150)
    
            self.checkBox1.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox1))
            self.checkBox2.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox2))
            self.checkBox3.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox3))
    
        def onButtonClicked(self):
            print('button clicked')
    
        def onRadioClicked(self):
            print('radio clicked')
            if self.radio1.isChecked():
                print('radio1 checked')
            elif self.radio2.isChecked():
                print('radio2 checked')
            elif self.radio3.isChecked():
                print('radio3 checked')
    
        def onCheckClicked(self, checkBox):
            print('check clicked')
            print(checkBox.text())
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        w = MyWidget()
        w.resize(500, 300)
        w.move(300, 300)
        w.setWindowTitle('Simple')
        w.show()
        sys.exit(app.exec_())

     3.通过点击设置值

    import sys
    
    from PyQt5.QtCore import Qt
    from PyQt5.QtGui import QFont
    from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QSpinBox, QSlider
    
    
    class MyWidget(QWidget):
        def __init__(self):
            super(MyWidget, self).__init__()
            # comboBox
            self.com = QComboBox(self)
            self.com.move(10, 10)
            self.com.addItem('one')
            self.com.addItem('two')
            self.com.addItem('three')
            self.com.currentIndexChanged.connect(self.onChange)
    
            # spinBox
            self.spin = QSpinBox(self)
            self.spin.resize(100, 30)
            self.spin.move(10, 50)
            self.spin.setRange(10, 50)
            self.spin.setSingleStep(2)
            self.spin.setValue(25)
            self.spin.valueChanged.connect(self.onSpinChange)
    
            # slider
            self.slider = QSlider(Qt.Horizontal)
            self.slider.setParent(self)
            self.slider.resize(300, 20)
            self.slider.move(10, 100)
            self.slider.setRange(50, 150)
            self.slider.setTickInterval(5)
            self.slider.setValue(50)
            self.slider.setTickPosition(QSlider.TicksBelow)
            self.slider.setFont(QFont('Arial', 18))
            self.slider.valueChanged.connect(self.onSliderChange)
    
        def onChange(self, index):
            print(self.com.itemText(index))
    
        def onSpinChange(self, value):
            print(value)
    
        def onSliderChange(self, value):
            print(value)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        w = MyWidget()
        w.resize(500, 300)
        w.move(300, 300)
        w.setWindowTitle('Simple')
        w.show()
        sys.exit(app.exec_())

    4.日期时间选择

    import sys
    from PyQt5 import QtCore
    from PyQt5.QtCore import QDate, Qt
    from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QDateTimeEdit
    
    class MyWidget(QWidget):
        def __init__(self):
            super(MyWidget, self).__init__()
    
            # 日历
            self.calendar = QCalendarWidget(self)
            self.calendar.setMinimumDate(QDate(1980, 1, 1))
            self.calendar.setMaximumDate(QDate(3000, 1, 1))
            self.calendar.setGridVisible(True)
            self.calendar.setFirstDayOfWeek(Qt.Monday)
            self.calendar.move(10, 10)
            self.calendar.clicked[QtCore.QDate].connect(self.showData)
    
            # dateTimeEdit
            self.dte = QDateTimeEdit(self)
            self.dte.setMaximumDate(QDate.currentDate().addDays(365))
            self.dte.setMinimumDate(QDate.currentDate().addDays(-365))
            self.dte.setDisplayFormat('yyyy-MM-dd HH:mm:ss')
            self.dte.move(10, 250)
            self.dte.dateChanged.connect(self.onDateChange)
            self.dte.timeChanged.connect(self.onTimeChange)
            self.dte.dateTimeChanged.connect(self.onDateTimeChange)
    
        def showData(self, date):
            print(date.toString("yyyy-MM-dd dddd"))
    
        def onDateChange(self, data):
            print("onDateChange: ")
            print(data)
    
        def onTimeChange(self, time):
            print("onTimeChange: ")
            print(time)
    
        def onDateTimeChange(self, dateTime):
            print("onDateTimeChange: ")
            print(dateTime)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        w = MyWidget()
        w.resize(500, 300)
        w.move(300, 300)
        w.setWindowTitle('Simple')
        w.show()
        sys.exit(app.exec_())
    setRange
  • 相关阅读:
    这个Pandas函数可以自动爬取Web图表
    /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/python3.6/lib/python3.6/site-packages/paddle/fluid/core_avx.so)
    kubernetes yaml详解
    centos 安装kubernetes
    初识kafka-connect
    Docker1:本地连接Docker中的mysql,实现数据同步
    git分支管理规范
    cat 配置告警规则
    Java的即时编译(Just In Time, JIT)及其优化
    java自定义实现一个缓存器
  • 原文地址:https://www.cnblogs.com/chusiyong/p/12908847.html
Copyright © 2011-2022 走看看