python - 在 PyQt PushButton 单击期间发送附加变量

标签 python python-2.7 pyqt pyqt4

<分区>

我是 Python 和 PyQt 的新手,这是我的第一个应用程序。当前,当单击按钮时,toggleLED() 检查 self.LedOn 以决定是否打开 LED。

class Screen(QWidget):

    def initUI(self):
        self.LedOn = 0

        btn = QPushButton('Off', self)
        btn.setCheckable(True)
        btn.clicked.connect(self.toggleLED)


    def toggleLED(self, pressed):

        source = self.sender()

        if self.LedOn:
            source.setText('Off')
            source.LedOn = 0
            self.serial.write('L')
        else:           
            source.setText('On')
            source.LedOn = 1
            self.serial.write('H')

问题:现在如果我们想要控制多个 LED 并记住它们各自的切换状态,最佳做法是什么?

我似乎也无法通过 btn.clicked.connect(self.toggleLED(btnNumber)) 将附加值传递给 toggleLED()

class Screen(QWidget):

    def initUI(self):

        btn1 = QPushButton('Off', self)
        btn1.setCheckable(True)
        btn1.LedOn= 0
        btn1.clicked.connect(selftoggleLED(1))

        btn2 = QPushButton('Off', self)
        btn2.setCheckable(True)
        btn2.LedOn= 0
        btn2.clicked.connect(selftoggleLED(2))


    def toggleLED(self, pressed, value):

        source = self.sender()

        if self.LedOn:
            source.setText('Off')
            self.serial.write(value)
            self.serial.write('L')
        else:           
            source.setText('On')
            self.serial.write(value)
            self.serial.write('H')

最佳答案

您可以为此使用partial:

from functools import partial

btn1.clicked.connect(partial(self.toggleLED, 1))

这允许您将多个参数传递给一个函数。

关于python - 在 PyQt PushButton 单击期间发送附加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18925241/

相关文章:

python - Python Django RegExp错误

python - 为什么pyinstaller找不到win32api的错误属性

python-2.7 - 如何仅在Python turtle 中绘制半圆

python - QSlider handle 尺寸 PyQt5

python - 从邻居导入模块但报告语法错误

python - 将 matplotlib 轮廓限制/屏蔽到数据区域

Python - 为什么删除小部件后,然后从另一个方法添加它无法添加相同的小部件?

Python-tk 包在 Python 2.7.3 中无法识别

python - IPython 嵌入式 QT 小部件,无需内核

Python:如何共享同一个小部件