PyQt5中QLineEdit、QRadioButton、QComboBox这些小部件的change事件

最近在用PyQt5做项目,总结一下QLineEdit、QRadioButton、QComboBox这些部件用到的change事件绑定,即信号与插槽。

QLineEdit

QLineEdit 对象是最常用的输入字段。 它提供了一个框,可以在其中输入一行文本。 要输入多行文本,需要 QTextEdit 对象。

方法 说明
textChanged() 当框中的文本通过输入或编程方式更改时

以下是重写的一个 QLineEdit 类:

from PyQt5.QtWidgets import QLineEdit
from Config import ConfigParams

class LineEdit(QLineEdit):
    def __init__(self, k):
        super().__init__()
        self.textChanged.connect(lambda current_text: self.text_changed(k, current_text))

    def text_changed(self, k, v):
        print(k, v)
        configParams = ConfigParams()
        setattr(configParams, k, v)   // 设置属性值

实例化该类:

line1 = LineEdit('WaterViscosity')

此示例中 line1 字段上的 textChanged() 信号连接到 text_changed() 插槽方法。使用 lambda 可以传入多个参数,current_text 为当前值。

QRadioButton

QRadioButton 类对象呈现一个带有文本标签的可选按钮。用户可以选择表单上显示的许多选项之一。该类派生自 QAbstractButton 类。

默认情况下,单选按钮是自动排他的。因此,一次只能选择父窗口中的一个单选按钮。如果选择了一个,则会自动取消选择先前选择的按钮。 单选按钮也可以放在 QGroupBoxQButtonGroup 中,以在父窗口上创建多个可选字段。

方法 说明
isChecked() 检查按钮是否被选中
toggled() 当选中按钮更改时

以下是重写的一个 QRadioButton 类:

from PyQt5.QtWidgets import QRadioButton
from Config import ConfigParams

class RadioButton(QRadioButton):
    def __init__(self, text, k = ''):
        super().__init__(text)
        self.setStyleSheet('font-size: 14px; border: none;')
        self.toggled.connect(lambda: self.radio_changed(k))

    def radio_changed(self, k):
        print(self.text(), self.isChecked(), k)
        configParams = ConfigParams()
        if self.isChecked():
            setattr(configParams, k, self.text())

实例化该类:

radio1 = RadioButton('Laminar', 'TurbulenceModel')
radio2 = RadioButton('RANS', 'TurbulenceModel')
radio3 = RadioButton('LES', 'TurbulenceModel')

效果如图:
PyQt5中QLineEdit、QRadioButton、QComboBox这些小部件的change事件_第1张图片

QComboBox

QComboBox 对象提供一个可供选择的项目的下拉列表。只显示当前选定的项目所需的窗体上的最小屏幕空间。

方法 说明
addItems() 在列表对象中添加项目
currentTextChanged() 每当选中项通过下拉或以编程方式更改时

以下是重写的一个 QComboBox 类:

from PyQt5.QtWidgets import QComboBox
from Config import ConfigParams

class Select(QComboBox):
    def __init__(self, items = [], k = ''):
        super().__init__()
        self.addItems(items)
        self.currentTextChanged.connect(lambda current_text: self.select_changed(k, current_text))
        comboboxStyle = CommonHelper.readQSS('Style/combobox.qss')   // 自定义样式
        self.setStyleSheet(comboboxStyle)

    def select_changed(self, k, v):
        print(k, v)
        configParams = ConfigParams()
        setattr(configParams, k, v)

实例化该类:

material = Select(['Water', 'Air', 'Sand', 'Oil', 'Mashgas', 'User defned'], 'FillingType')

效果如图:
PyQt5中QLineEdit、QRadioButton、QComboBox这些小部件的change事件_第2张图片

你可能感兴趣的:(PyQt5,Python,python,PyQt5,qt5,信号与插槽)