2017-01-19 6 views
0

QT Designerを使用して、2つのQLineEditを使用してユーザーからの入力を受けました。ユーザーが値を入力した後、Enterボタンをクリックすると、値をdisk_angles関数に渡すためのボタンが必要になります。ボタンをクリックして2つの引数を関数に送信する

ボタンを押して信号を介して2つの文字列を関数に渡すにはどうすればよいですか? は、ここで私は、信号 pass_arguments = SIGNAL((str,),(str,)) への入力としてタプルを渡すことを試みた

class Maindialog(QMainWindow,diskgui.Ui_MainWindow): 

    pass_arguments = SIGNAL((str,),(str,)) 

    def __init__(self,parent = None): 

     super(Maindialog,self).__init__(parent) 
     self.setupUi(self) 

     self.connect(self.Home,SIGNAL("clicked()"),self.home_commands) 
     self.connect(self.AutoFocus,SIGNAL("clicked()"),self.auto_focus) 

     self.Enter.clicked.connect(self.entervalues) 
     self.connect(self,SIGNAL("pass arguments"),self.Criterion_disk_angles) 

    def entervalues(self): 
     if self.RotationEdit.text() != "" and self.TiltEdit.text() != "": 
     self.RotationEdit = str(self.RotationEdit.text()) 
     self.TiltEdit = str(self.TiltEdit.text()) 
     self.pass_arguments.emit(self.RotationEdit,self.TiltEdit) 

    def disk_angles(self,rotation_angle, tilt_angle): 

私のコードですが、私はまた、new styleを使用することをお勧めします

PyQt5で
  pass_arguments = SIGNAL((str,),(str,)) 
     TypeError: SIGNAL() takes exactly one argument (2 given) 
+1

このエラーをお読みくださいか? 'SIGNAL'は1つの引数をとりますが、2を返しました... – Li357

+0

@Andrew Liはい、タプルとして渡すと、シグナル内に2つの引数を渡すことができます。しかし、私は間違って理解しています。 –

+0

は、pass_arguments = SIGNAL((str、str)) – eyllanesc

答えて

1

エラーを取得しますあなたは1つの場所の2つのタプルを送信しています。ここで私は正しい実装の例を示します。

import sys 

from PyQt5.QtCore import QObject, pyqtSignal 
from PyQt5.QtWidgets import QApplication, QPushButton 


class Widget(QObject): 
    sig = pyqtSignal((str, str)) 

    def __init__(self, parent=None): 
     super(Widget, self).__init__(parent=parent) 
     self.sig.connect(self.printer) 

    def click(self): 
     self.sig.emit("hello", "bye") 

    def printer(self, text1, text2): 
     print(text1, text2) 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = QPushButton() 
    w1 = Widget() 
    w.clicked.connect(w1.click) 
    w.show() 
    sys.exit(app.exec_()) 
+0

ありがとうございます –

関連する問題