Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单击按钮向函数发送两个参数_Python_Python 3.x_Pyqt5_Qt Signals - Fatal编程技术网

Python 单击按钮向函数发送两个参数

Python 单击按钮向函数发送两个参数,python,python-3.x,pyqt5,qt-signals,Python,Python 3.x,Pyqt5,Qt Signals,我使用QT设计器有两个QLineEdit从用户那里获取输入。用户输入值后,单击Enter按钮时,我需要按钮将值传递给disk_angles函数 如何通过按下按钮的信号将两个字符串传递给函数? 这是我的密码 class Maindialog(QMainWindow,diskgui.Ui_MainWindow): pass_arguments = SIGNAL((str,),(str,)) def __init__(self,parent = None): su

我使用QT设计器有两个QLineEdit从用户那里获取输入。用户输入值后,单击Enter按钮时,我需要按钮将值传递给disk_angles函数

如何通过按下按钮的信号将两个字符串传递给函数? 这是我的密码

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):
我试图将元组作为输入传递给信号
pass\u arguments=SIGNAL((str,),(str,))
但是我得到了错误

         pass_arguments = SIGNAL((str,),(str,))
         TypeError: SIGNAL() takes exactly one argument (2 given)

在PyQt5中,建议使用,此外,您将发送2个元组代替1,这里我展示了一个正确实现的示例

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_())

你读到错误了吗<代码>信号接受1个参数,但您提供了2…@Andrew Li是的,但我了解到,如果您将信号作为元组传递,您可以在信号中传递两个参数。但我有点理解错了,用pass_参数=SIGNAL((str,str))和self.pass_参数.emit((self.RotationEdit,self.TiltEdit))@RaghavendraMG
(str,),(str,)
不仅仅是一个元组,它是两个元组。。。