0

LabJAck IO モジュールにアクセスするための 2 つのシンプルなボタンを備えた小さな GUI があります。このモジュールは、接続された外部デバイスの電源をオンまたはオフにするために使用されます。デバイスを初期化するクラスと、デバイスでいくつかのことを行うためのいくつかのメソッドを作成しました。そのうちの 2 つはオンとオフです。この方法で LAbJack にアクセスしようとしている理由は、コードをきちんとしたものにしたいと考えており、マシンに複数のデバイスを接続し、各デバイスに特定の IO コマンドを持たせるためです。

LabJack のコードは次のとおりです。

import u3

class LabJack:
    def __init__(self):

        try:
            self.Switch = u3.U3()
        except:
            print "Labjack Error"

        #Define State Registers for RB12 Relay Card

        self.Chan0 = 6008
        Chan1 = 6009
        Chan2 = 6010
        Chan3 = 6011
        Chan4 = 6012
        Chan5 = 6013

    #Turn the channel on
    def IO_On(self,Channel):
        self.Switch.writeRegister(Channel,0)


    #Turn the channel off
    def IO_Off(self,Channel):   
        self.Switch.writeRegister(Channel,1)

    #The State of the Channel
    def StateSetting(self,Channel):
        self.Switch.readRegister(Channel)
        if Switch.readRegister(Channel) == 0:
            print ('Channel is On')
        else:
            print('Channel is Off')

    #Direction of Current Flow
    def CurrentDirection(self,Channel):
        self.Switch.readRegister(6108)
        print self.Switch.readRegister(6108) 

ここに私のGUIコードがあります:

import re
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
from LabJackIO import *
from Piezo902 import *

import ui_aldmainwindow

class ALDMainWindow(QMainWindow,ui_aldmainwindow.Ui_ALDMainWindow):

    def __init__(self, parent=None):
        super(ALDMainWindow,self).__init__(parent) 
        self.setupUi(self)

        self.ValveControl = LabJack()

        self.Valve_ON.clicked.connect(self.ValveControl.IO_On(6008))
       self.Valve_OFF.clicked.connect(self.ValveControl.IO_Off(self.ValveControl.Chan0))
        self.statusBar().showMessage('Valve Off')

app = QApplication(sys.argv)
app.setStyle('motif')
form = ALDMainWindow()
form.show()
app.exec_()

コードを実行すると、次のエラーが表示されます。

Traceback (most recent call last):
  File "ALDSoftwareMainWindow.py", line 26, in <module>
    form = ALDMainWindow()
  File "ALDSoftwareMainWindow.py", line 20, in __init__
    self.Valve_ON.clicked.connect(self.ValveControl.IO_On(6008))
TypeError: connect() slot argument should be a callable or a signal, not 'int'

私は自分が間違っていることを理解できません。どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

1

1partialおそらく最善の方法を使用します。

self.Valve_ON.clicked.connect(functools.partial(self.ValveControl.IO_on,6008))

2 を使用しQSignalMapperます。

于 2013-09-23T03:08:27.087 に答える